您好,登錄后才能下訂單哦!
這篇文章主要介紹“Go語言結構體Go range怎么使用”,在日常操作中,相信很多人在Go語言結構體Go range怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Go語言結構體Go range怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
有 C 相關經驗,結構體還是比較容易理解的,語法格式如下所示:
type struct_variable_type struct { member definition member definition ... member definition }
上述語法格式的關鍵字是 struct
和 type
,struct_variable_type
是結構體名稱,例如我們聲明一個【人】的結構體,有姓名,有年齡,有性別。
package main import "fmt" // 聲明結構體 type People struct { name string age int sex int } func main() { //使用結構體 people := People{ "橡皮擦", 18, 0} fmt.Println(people) }
在編寫的時候要注意語法格式,其中結構體的使用代碼建議放在一行,或者右大括號緊跟最后一個元素。
使用結構體也可以攜帶元素名,即下述寫法。
//使用結構體 people := People{name: "橡皮擦", age: 18, sex: 0} fmt.Println(people)
訪問結構體成員 使用 結構體.成員名
即可,當然也可以用該辦法進行賦值。
//使用結構體 var people1 People // var people2 People people1.name = "橡皮擦" people1.age = 18 people1.sex = 1 fmt.Println(people1)
作為一個 Python 程序員,關鍵字 range 是非常熟悉的,在 Go 中 range 關鍵字可以用于 for 循環(huán),用于數組它返回元素的索引和值,在后續(xù)學習的集合中返回鍵值對。
range 用于數組的語法格式如下所示:
for i,value := range a_array{ // TODO }
結合語法格式,編寫下述代碼:
package main import "fmt" var a_array = []int{1, 2, 3, 4, 5, 6, 7, 8} func main() { for i, value := range a_array { fmt.Printf("索引:%d,值:%d\n", i, value) } }
運行代碼輸出如下信息:
索引:0,值:1
索引:1,值:2
索引:2,值:3
索引:3,值:4
索引:4,值:5
索引:5,值:6
索引:6,值:7
索引:7,值:8
如果將 range 作用于字符串,可以對其每個字符進行迭代輸出。
package main import ( "fmt" ) func main() { var str string = "xiangpica" for k, v := range str { fmt.Println(k, string(v)) } }
上述 str
中的內容為純英文,k
值每次+1。
0 x
1 i
2 a
3 n
4 g
5 p
6 i
7 c
8 a
如果 str
中包含中文,k
值每次 +3,代碼如下:
func main() { var str string = "橡皮擦" for k, v := range str { fmt.Println(k, string(v)) } }
輸出結果如下:
0 橡
3 皮
6 擦
如果是中英文混拼,出現的結果會更加有趣。
0 x
1 i
2 a
3 n
4 g
5 橡
8 p
9 i
10 皮
13 c
14 a
15 擦
這里其實可以得到一個結論,range
迭代是的 Unicode,而不是字節(jié),返回值是 UTF-8 編碼第 1 個字節(jié)的索引,所以索引值有可能并不連續(xù)。
在編寫代碼的時候,如果不需要索引,只保留元素,可以使用廢棄占位符,代碼如下:
var str string = "xiang橡pi皮ca擦" for _, v := range str { fmt.Println(string(v)) }
到此,關于“Go語言結構體Go range怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。