<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Go 語言中陣列可以儲存同一型別的資料,但在結構體中我們可以為不同項定義不同的資料型別
結構體是由一系列具有相同型別或不同型別的資料構成的資料集合
結構體表示一項記錄,比如儲存圖書館的書籍記錄,每本書有以下屬性:
Title :標題
Author : 作者
Subject:學科
ID:書籍ID
結構體定義需要使用 type 和 struct 語句
struct 語句定義一個新的資料型別,結構體中有一個或多個成員
type 語句設定了結構體的名稱
結構體的格式如下
type struct_variable_type struct { member definition member definition ... member definition }
一旦定義了結構體型別,它就能用於變數的宣告,語法格式如下
variable_name := structure_variable_type {value1, value2...valuen}
或者
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}
package main import "fmt" type Persion struct { name string sex string age int id_card int } func main() { //建立一個新的結構體 fmt.Println(Persion{"zhangsan", "男", 20, 123412424}) //使用key:value格式 fmt.Println(Persion{name: "lisi", sex: "女", age: 18, id_card: 133654623}) //忽略的欄位為0或空 fmt.Println(Persion{name: "wangwu", id_card: 21352365}) }
輸出結果
{zhangsan 男 20 123412424}
{lisi 女 18 133654623}
{wangwu 0 21352365}
如果要存取結構體成員,需要使用點號.操作符,格式為:
結構體.成員名"
結構體型別變數使用 struct 關鍵字定義,範例如下:
package main import "fmt" func main() { //結構體宣告 type Persion struct { name string age int sex string id int } //結構體型別的變數 var ( Persion1 Persion //宣告 Persion1 為 Persion 型別 Persion2 Persion //宣告 Persion2 為 Persion 型別 ) //給prison1賦值 Persion1.name = "lisi" Persion1.sex = "man" Persion1.age = 30 Persion1.id = 56341153 //給prison2賦值 Persion2.name = "wangwu" Persion2.sex = "woman" Persion2.age = 18 Persion2.id = 78238232 fmt.Println(Persion1) fmt.Println(Persion2) }
輸出結果如下
{lisi 30 man 56341153}
{wangwu 18 woman 78238232}
結構體也可以作為引數傳遞給函數,可以解決一些程式碼的冗餘問題,簡化程式碼
範例
package main import "fmt" //結構體宣告 type Persion struct { name string age int sex string id int } func main() { //結構體型別的變數 var ( Persion1 Persion //宣告 Persion1 為 Persion 型別 Persion2 Persion //宣告 Persion2 為 Persion 型別 ) //給prison1賦值 Persion1.name = "lisi" Persion1.sex = "man" Persion1.age = 30 Persion1.id = 56341153 //給prison2賦值 Persion2.name = "wangwu" Persion2.sex = "woman" Persion2.age = 18 Persion2.id = 78238232 //使用函數傳遞結構體 printInfo(Persion1) fmt.Println("------------------") printInfo(Persion2) } //函數定義結構體為形式引數,進行傳入 func printInfo(p Persion) { fmt.Println("姓名: ", p.name) fmt.Println("年齡: ", p.age) fmt.Println("性別: ", p.sex) fmt.Println("身份證: ", p.id) }
輸出結果如下
姓名: lisi
年齡: 30
性別: man
身份證: 56341153
------------------
姓名: wangwu
年齡: 18
性別: woman
身份證: 78238232
可以定義指向結構體的指標類似於其他指標變數,格式如下
var struct_pointer *Persion
以上定的指標變數可以儲存結構體變數的地址,檢視結構體變數的地址,可以將&符合放置於結構體變數前
struct_pointer = &Persion1
使用結構體指標存取結構體成員,可以使用.操作符
struct_pointer.title
package main import "fmt" //結構體宣告 type Persion struct { name string age int sex string id int } func main() { //結構體型別的變數 var ( Persion1 Persion //宣告 Persion1 為 Persion 型別 Persion2 Persion //宣告 Persion2 為 Persion 型別 ) //給prison1賦值 Persion1.name = "lisi" Persion1.sex = "man" Persion1.age = 30 Persion1.id = 56341153 //給prison2賦值 Persion2.name = "wangwu" Persion2.sex = "woman" Persion2.age = 18 Persion2.id = 78238232 //使用函數傳遞結構體的地址 printInfo(&Persion1) fmt.Println("------------------") printInfo(&Persion2) } //定義結構體指標形參進行傳入 func printInfo(p *Persion) { fmt.Println("姓名: ", p.name) fmt.Println("年齡: ", p.age) fmt.Println("性別: ", p.sex) fmt.Println("身份證: ", p.id) }
輸出結果如下
姓名: lisi
年齡: 30
性別: man
身份證: 56341153
------------------
姓名: wangwu
年齡: 18
性別: woman
身份證: 78238232
結構體是由相同型別和不同型別組成的資料集合,儲存的結構型別是不受限制的
以上就是Go語言學習之指標的用法詳解的詳細內容,更多關於Go語言指標的資料請關注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