亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

當某些時候需要將結構體進行序列化的時候(類似Java的toString()方法)也需要實現go語言中的String()方法,舉個簡單的例子:


package main


import (

"bytes"

"encoding/json"

"fmt"

)


func main() {

dog := getDog(11, "kaka", 12, "little")

fmt.Println(dog.String())

}

type Dog struct {

//后面的部分是在對結構體進行序列化時對應的數據類型以及別名

//要注意,如果結構體對成員變量首字母小寫是不可以序列化的,不管給不給別名

ID int `json:"id"`

Name string `xml:"name"`

Age int `json:"age"`

flaw string `json:"flaw"`

}


func (d *Dog) String() string? {

//json.Marshal()的作用是將結構體序列化為json格式的數據

//而與其對應的是Unmashal()方法,將json數據反序列化為結構體對象

//返回的是字節數組,由于沒有實現String()方法,所以需要一個實現了該方法的緩沖數組轉存一下

b, err := json.Marshal(*d)

//fmt.Println(reflect.TypeOf(b))

if err != nil {

return fmt.Sprint("%+v", *d)

}

//bytes.Buffer是一個字節緩沖結構體對象

var out bytes.Buffer

//將b的內容 加上`prefix` 以indent為縮進轉存到out中

err = json.Indent(&out, b, "", "\t")

if err!= nil {

return fmt.Sprint("%+v", *d)

}

return out.String()

}

func getDog(id int, name string, age int, flaw string) Dog {

return Dog{

ID:? ?id,

Name: name,

Age:? age,

flaw: flaw,

}

}


正在回答

1 回答

我就是想給同學們說一下需要注意的一些細節?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

當某些時候需要將結構體進行序列化的時候(類似Java的toString()方法)也需要實現go語言中的String()方法,舉個簡單的例子:

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號