Object golang发送和接收对象

Object golang发送和接收对象,object,go,send,Object,Go,Send,我能够使用以下代码在golang中发送和接收字符串: //send side message.Buf.WriteTo(conn) //receive side message, err := bufio.NewReader(conn).ReadString('\n') if err != nil { panic(err) } fmt.Print("Message from client: ", string(message)) 但是,我希望发送整个messag

我能够使用以下代码在golang中发送和接收字符串:

//send side
message.Buf.WriteTo(conn)

//receive side
message, err := bufio.NewReader(conn).ReadString('\n')
    if err != nil {
        panic(err)
    }
fmt.Print("Message from client: ", string(message))
但是,我希望发送整个message对象并在接收端接收它

比如:

//send side
message.WriteTo(conn)

//receive side
message,err :=bufio.NewReader(conn).ReadMessageObject()
type Message struct {
    From      string
    To        string
    Text      string
    CreatedAt time.Time
}

我是Golang的新手,任何指针都非常有用。

您首先要声明消息的类型。比如:

//send side
message.WriteTo(conn)

//receive side
message,err :=bufio.NewReader(conn).ReadMessageObject()
type Message struct {
    From      string
    To        string
    Text      string
    CreatedAt time.Time
}
然后,您需要决定如何将新类型编码为字节/从字节解码,因为您可以通过线路发送的都是字节。 例如,您可以将消息作为、作为或作为等方式发送。您选择哪一种取决于您的需求,
json
无处不在且可读,但另一方面
gob
要快得多,至少我听说了这一点,我自己还没有真正使用过
gob

例如,如果使用
json

// receive
var m Message
if _, err := json.NewDecoder(conn).Decode(&m); err != nil {
    panic(err)
}

// send
if err := json.NewEncoder(conn).Encode(m); err != nil {
    panic(err)
}

“发送对象”的方式有无数种。您想使用什么编码?谢谢您的示例。如果我有多个对象必须通过网络发送?关于如何实现它有什么建议吗?你可以使用切片、映射、数组。。这真的取决于你,
json
gob
都能很好地处理这些问题。我查看了地图和切片,并使用它们发送了一组对象。然而,我也希望能够连续发送数据流,这似乎不起作用。如果你打开一个新问题,那会更好。一个是关于你试图实现什么的精确解释,你目前拥有的代码,有哪些有效,哪些无效,你想要得到的结果和你实际得到的不想要的结果。