golang发送和接收对象

I am able to send and receive strings in golang using the following code:

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

//receive side
message, err := bufio.NewReader(conn).ReadString('
')
    if err != nil {
        panic(err)
    }
fmt.Print("Message from client: ", string(message))

However, I would like to send the entire message object and receive it at the receive side

Something like:

//send side
message.WriteTo(conn)

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

I am new to Golang and any pointers are extremely helpful.

You'll first want to declare a type for your messages. Something like:

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

Then you'll need to decide how you want your new types to be encoded to/decoded from bytes, since all you can send through the wire are bytes. You can for example send your messages as json, as xml, or as gob, etc. Which one you choose depends on what your requirements are, json is ubiquitous and readable but gob on the other hand is much faster, at least that's what I heard, haven't really used gob myself yet.

For example if you go with 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)
}