<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在前一篇部落格我們學習了 Go 陣列,其要求所有元素為同一資料型別,如果希望儲存不同型別的資料,就要用到結構體相關知識。
結構體的定義:儲存相同或不同型別的資料集合。
有 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 迴圈,用於陣列它返回元素的索引和值,在後續學習的集合中返回鍵值對。
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,值:%dn", 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,而不是位元組,返回值是 UTF-8 編碼第 1 個位元組的索引,所以索引值有可能並不連續。
在編寫程式碼的時候,如果不需要索引,只保留元素,可以使用廢棄預留位置,程式碼如下:
var str string = "xiang橡pi皮ca擦" for _, v := range str { fmt.Println(string(v)) }
range 相關知識等學到切片和集合的時候,應該還會涉及到,這裡參考其它語言的經驗,我們下篇再見。
以上就是Go語言結構體Go range的學習教學的詳細內容,更多關於Go range結構體的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45