等价的Python bencoded列表

The server which I am contacting to is written in python and excepts bencoded list.

In my existing python client code I do something like this:

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

Server gets back the list by:

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

How do I achieve the client part in golang? I know that there is bencode packages already written, but the trick here is how do I arrive at 'li4456e6:Rakeshi27ee' in golang by providing a sequence of elements of 'different data types' so that when server(written in python) does bdecode, it gets back list [4456, 'Rakesh', 27].

I am writing only the client in golang and don't want to change anything on the server side.

This appears to do what you want:

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())
}

Output:

li4456e6:Rakeshi27ee