如何将Uint64的片段转换为字节的片段

I currently have a protobuf struct that looks like this:

type RequestEnvelop_MessageQuad struct {
    F1   [][]byte `protobuf:"bytes,1,rep,name=f1,proto3" json:"f1,omitempty"`
    F2   []byte   `protobuf:"bytes,2,opt,name=f2,proto3" json:"f2,omitempty"`
    Lat  float64  `protobuf:"fixed64,3,opt,name=lat" json:"lat,omitempty"`
    Long float64  `protobuf:"fixed64,4,opt,name=long" json:"long,omitempty"`
}

F1 takes some S2 Geometry data which I have generated like so:

ll := s2.LatLngFromDegrees(location.Latitude, location.Longitude)
cid := s2.CellIDFromLatLng(ll).Parent(15)
walkData := []uint64{cid.Pos()}

next := cid.Next()
prev := cid.Prev()

// 10 Before, 10 After
for i := 0; i < 10; i++ {
    walkData = append(walkData, next.Pos())
    walkData = append(walkData, prev.Pos())

    next = next.Next()
    prev = prev.Prev()
}

log.Println(walkData)

The only problem is, the protobuf struct expects a type of [][]byte I'm just not sure how I can get my uint64 data into bytes. Thanks.

Integer values can be encoded into byte arrays with the encoding/binary package from the standard library.

For instance, to encode a uint64 into a byte buffer, we could use the binary.PutUvarint function:

big := uint64(257)
buf := make([]byte, 2)
n := binary.PutUvarint(buf, big)
fmt.Printf("Wrote %d bytes into buffer: [% x]
", n, buf)

Which would print:

Wrote 2 bytes into buffer: [81 02]

We can also write a generic stream to the buffer using the binary.Write function:

buf := new(bytes.Buffer)
var pi float64 = math.Pi
err := binary.Write(buf, binary.LittleEndian, pi)
if err != nil {
    fmt.Println("binary.Write failed:", err)
}
fmt.Printf("% x", buf.Bytes())

Which outputs:

18 2d 44 54 fb 21 09 40

(this second example was borrowed from that packages documentation, where you will find other simliar examples)