第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

當(dāng)某些時候需要將結(jié)構(gòu)體進(jìn)行序列化的時候(類似Java的toString()方法)也需要實(shí)現(xiàn)go語言中的String()方法,舉個簡單的例子:


package main


import (

"bytes"

"encoding/json"

"fmt"

)


func main() {

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

fmt.Println(dog.String())

}

type Dog struct {

//后面的部分是在對結(jié)構(gòu)體進(jìn)行序列化時對應(yīng)的數(shù)據(jù)類型以及別名

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

ID int `json:"id"`

Name string `xml:"name"`

Age int `json:"age"`

flaw string `json:"flaw"`

}


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

//json.Marshal()的作用是將結(jié)構(gòu)體序列化為json格式的數(shù)據(jù)

//而與其對應(yīng)的是Unmashal()方法,將json數(shù)據(jù)反序列化為結(jié)構(gòu)體對象

//返回的是字節(jié)數(shù)組,由于沒有實(shí)現(xiàn)String()方法,所以需要一個實(shí)現(xiàn)了該方法的緩沖數(shù)組轉(zhuǎn)存一下

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

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

if err != nil {

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

}

//bytes.Buffer是一個字節(jié)緩沖結(jié)構(gòu)體對象

var out bytes.Buffer

//將b的內(nèi)容 加上`prefix` 以indent為縮進(jìn)轉(zhuǎn)存到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 回答

我就是想給同學(xué)們說一下需要注意的一些細(xì)節(jié)?

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

當(dāng)某些時候需要將結(jié)構(gòu)體進(jìn)行序列化的時候(類似Java的toString()方法)也需要實(shí)現(xiàn)go語言中的String()方法,舉個簡單的例子:

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號