Go檢查結(jié)構(gòu)體中是否存在某個(gè)字段及創(chuàng)建結(jié)構(gòu)體切片或映射
驗(yàn)證字段Z是否存在于結(jié)構(gòu)類(lèi)型Test中
下面的代碼片段聲明了具有字段A、B和C的結(jié)構(gòu)類(lèi)型Test。我們需要驗(yàn)證字段Z是否存在于結(jié)構(gòu)類(lèi)型Test中。
示例代碼:
package main import ( "log" "reflect" ) func main() { type test struct { A bool B bool C bool } v := new(test) metaValue := reflect.ValueOf(v).Elem() for _, name := range []string{"A", "C", "Z"} { field := metaValue.FieldByName(name) if field == (reflect.Value{}) { log.Printf("Field %s not exist in struct", name) } } }
輸出:
2009/11/10 23:00:00 Field Z not exist in struct
創(chuàng)建結(jié)構(gòu)體切片
示例代碼:
package main import ( "fmt" ) type Widget struct { id int attrs []string } func main() { widgets := []Widget{ Widget{ id: 10, attrs: []string{"blah", "foo"}, }, Widget{ id: 11, attrs: []string{"foo", "bar"}, }, Widget{ id: 12, attrs: []string{"xyz"}, }, } for _, j := range widgets { fmt.Printf("%d ", j.id) for _, y := range j.attrs { fmt.Printf(" %s ", y) } fmt.Println() } }
輸出:
10 blah foo
11 foo bar
12 xyz
創(chuàng)建結(jié)構(gòu)體映射
示例代碼:
package main import "fmt" type Emp struct { x int y []string } func main() { var list = map[string]*Emp{"e1": {1001, []string{"John", "US"}}} e := new(Emp) e.x = 1002 e.y = []string{"Rock", "UK"} list["e2"] = e fmt.Println(list["e1"]) fmt.Println(list["e2"]) }
輸出:
&{1001 [John US]}
&{1002 [Rock UK]}
以上就是Go檢查結(jié)構(gòu)體中是否存在某個(gè)字段及創(chuàng)建結(jié)構(gòu)體切片或映射的詳細(xì)內(nèi)容,更多關(guān)于Go結(jié)構(gòu)體檢查創(chuàng)建的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
go從指定的URL下載圖片并保存到本地的代碼實(shí)現(xiàn)
這段代碼定義了一個(gè)名為 downloadImage 的函數(shù),其目的是從指定的URL下載圖片并保存到本地文件系統(tǒng),本文是對(duì)代碼功能的詳細(xì)描述,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08Go語(yǔ)言實(shí)現(xiàn)可選參數(shù)的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言實(shí)現(xiàn)可選參數(shù)的一些常見(jiàn)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02Go語(yǔ)言開(kāi)發(fā)編程規(guī)范命令風(fēng)格代碼格式
這篇文章主要為大家介紹了Go語(yǔ)言開(kāi)發(fā)編程規(guī)范命令風(fēng)格代碼格式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06一文詳細(xì)談?wù)凣oLang的panic和error
說(shuō)是初識(shí),并不是說(shuō)第一次使用error和panic包,而是第一次特地去了解golang中的這兩個(gè)機(jī)制,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一文詳細(xì)談?wù)凣oLang中panic和error的相關(guān)資料,需要的朋友可以參考下2022-12-12golang Goroutine超時(shí)控制的實(shí)現(xiàn)
日常開(kāi)發(fā)中我們大概率會(huì)遇到超時(shí)控制的場(chǎng)景,比如一個(gè)批量耗時(shí)任務(wù)、網(wǎng)絡(luò)請(qǐng)求等,本文主要介紹了golang Goroutine超時(shí)控制的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09一文帶你了解Golang中select的實(shí)現(xiàn)原理
select是go提供的一種跟并發(fā)相關(guān)的語(yǔ)法,非常有用。本文將介紹?Go?語(yǔ)言中的?select?的實(shí)現(xiàn)原理,包括?select?的結(jié)構(gòu)和常見(jiàn)問(wèn)題、編譯期間的多種優(yōu)化以及運(yùn)行時(shí)的執(zhí)行過(guò)程2023-02-02Golang標(biāo)準(zhǔn)庫(kù)syscall詳解(什么是系統(tǒng)調(diào)用)
最近在研究go語(yǔ)言,發(fā)現(xiàn)go語(yǔ)言系統(tǒng)調(diào)用源碼只有調(diào)用函數(shù)的定義,今天通過(guò)本文給大家分享Golang標(biāo)準(zhǔn)庫(kù)syscall詳解及什么是系統(tǒng)調(diào)用,感興趣的朋友一起看看吧2021-05-05Go語(yǔ)言實(shí)現(xiàn)基于websocket瀏覽器通知功能
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)基于websocket瀏覽器通知功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07