golang发送和接收对象

时间:2017-04-30 19:23:27

标签: 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))

但是,我想发送整个消息对象并在接收端接收

类似的东西:

//send side
message.WriteTo(conn)

//receive side
message,err :=bufio.NewReader(conn).ReadMessageObject()

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

1 个答案:

答案 0 :(得分:0)

您首先要为邮件声明一种类型。类似的东西:

type Message struct {
    From      string
    To        string
    Text      string
    CreatedAt time.Time
}

然后,您需要决定如何根据字节对新类型进行编码/解码,因为通过线路发送的所有内容都是字节。 例如,您可以将邮件发送为jsonxmlgob等。您选择的邮件取决于您的要求,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)
}