91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go獲取結構體未導出私有變量

發布時間:2021-07-07 14:12:21 來源:億速云 閱讀:517 作者:chen 欄目:編程語言

本篇內容主要講解“Go獲取結構體未導出私有變量”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go獲取結構體未導出私有變量”吧!


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

首選我們建個新的包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其實是能獲取未導出的變量的。

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


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

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

程序輸出為:

2
2

到此,相信大家對“Go獲取結構體未導出私有變量”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

射洪县| 维西| 高阳县| 宿松县| 阿拉善右旗| 南通市| 武定县| 湘乡市| 福鼎市| 彩票| 炉霍县| 如皋市| 惠水县| 宿迁市| 凤庆县| 乌兰察布市| 建水县| 邢台市| 大余县| 昭平县| 隆德县| 科尔| 肥东县| 茌平县| 蓬溪县| 凤山县| 丹江口市| 渝中区| 卢龙县| 乌恰县| 鄯善县| 麟游县| 琼海市| 延寿县| 南华县| 淮阳县| 太和县| 庆城县| 安达市| 边坝县| 鄂尔多斯市|