真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go獲取結(jié)構(gòu)體未導(dǎo)出私有變量

本篇內(nèi)容主要講解“Go獲取結(jié)構(gòu)體未導(dǎo)出私有變量”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Go獲取結(jié)構(gòu)體未導(dǎo)出私有變量”吧!

鑲黃ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

Go語音通過首字符的大小寫來限制變量、函數(shù)的包外可見性。最近遇到個(gè)問題,需要訪問一個(gè)官方包的未導(dǎo)出變量,發(fā)現(xiàn)可以通過反射獲取,于是記錄下來:

首選我們建個(gè)新的包user/user.go

package user

type User struct {
    id   int
    Name string
}

func NewUser() User {
    return User{2, "gojuukaze"}
}

然后我們編寫main.go,通過reflect.ValueOf輸出user

func main(){
    user:= user.NewUser()
    fmt.Println(user.Name)
    fmt.Println(reflect.ValueOf(user))
}

程序的輸出為:

gojuukaze
{2 gojuukaze}

可以看到reflect.ValueOf其實(shí)是能獲取未導(dǎo)出的變量的。

reflect.ValueOf返回的是結(jié)構(gòu)體Value,接下來我們查看Value方法,可以看到一個(gè)FieldByName函數(shù),從名字不難看出,它是通過字段名獲取字段。


接下來嘗試通過FieldByName獲取變量。需要注意的是FieldByName返回的是Value類型,你可能需要經(jīng)過類型裝換后才能使用。

func main(){
    user:= user.NewUser()
    v:=reflect.ValueOf(user)
    fmt.Println(v.FieldByName("id"))
    fmt.Println(v.FieldByName("id").Int())
}

程序輸出為:

2
2

到此,相信大家對(duì)“Go獲取結(jié)構(gòu)體未導(dǎo)出私有變量”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


標(biāo)題名稱:Go獲取結(jié)構(gòu)體未導(dǎo)出私有變量
URL地址:http://weahome.cn/article/jsehhg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部