golang

时间:2016-06-16 16:16:56

标签: go

我联系的服务器是用python编写的,除了bencoded list。

在我现有的python客户端代码中,我做了类似这样的事情:

>>> import bencode
>>> data = [4456, 'Rakesh', 27]
>>> bdata = bencode.bencode(data)
>>> bdata
'li4456e6:Rakeshi27ee'

服务器通过以下方式返回列表:

>>> bencode.bdecode(bdata)
[4456, 'Rakesh', 27]

如何在golang中实现客户端部分?我知道已经编写了bencode包,但这里的技巧是如何通过提供一系列'不同数据类型'的元素来到golang中的'li4456e6:Rakeshi27ee',以便在服务器(用python编写)时进行bdecode ,它回到列表[4456,'Rakesh',27]。

我只在golang中编写客户端,并且不想在服务器端更改任何内容。

1 个答案:

答案 0 :(得分:2)

这似乎可以满足您的需求:

package main

import "fmt"
import "bytes"
import "log"

import bencode "github.com/jackpal/bencode-go"

func main() {
    a := []interface{}{4456, "Rakesh", 27}

    var buf bytes.Buffer

    err := bencode.Marshal(&buf, a)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(buf.String())
}

输出:

li4456e6:Rakeshi27ee