中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Go語言中結構體如何使用

發布時間:2021-08-13 16:14:24 來源:億速云 閱讀:147 作者:Leah 欄目:數據庫

本篇文章為大家展示了Go語言中結構體如何使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

結構體
Go語言中的基本數據類型可以表示一些事物的基本屬性,但是當我們想表達一個事物的全部或部分屬性時,這時候基本數據類型就無法滿足需求了。
Go語言提供了一種自定義數據類型,可以封裝多個基本數據類型,這種數據類型叫結構體(struct)。
我們可以通過struct來定義自己的類型了。
Go語言中通過struct來實現面向對象。
2.1結構體的定義
使用type和struct關鍵字來定義結構體,具體代碼格式如下:

type 類型名 struct {
 字段名 字段類型
 字段名 字段類型
 …
}

其中:
類型名:標識自定義結構體的名稱,在同一個包內不能重復。
字段名:表示結構體字段名。結構體中的字段名必須唯一。
字段類型:表示結構體字段的具體類型。
舉個例子,我們定義一個Person結構體,代碼如下:
type Person struct {
 name string
 city string
 age int8
}

同樣類型的字段可以卸載一行
type Person struct {
 name,city string
 age int8
}

這樣我們就擁有了一個Person的自定義類型,它有name,city,age三個字段,分別表示姓名,城市和年齡。
這樣我們就能使用Person結構體存儲人的信息了。

語言內置的數據類型是用來描述一個值得,結構體是用來描述一組值的。
比如一個人有名字,年齡和居住城市等,本質上是一種聚合型的數據類型。
2.2結構體實例化
只有當結構體實例化時,才會真正的分配內存。即必須實例化后才能使用結構體的字段。
結構體本身也是一種類型,我們可以像聲明內置類型一樣使用var關鍵字聲明結構體類型。

var 結構體實例 結構體類型
2.2.1結構體基本實例化
通過"."來訪問結構體的字段,例如person1.name和person1.age

package mainimport "fmt"type Person struct {    name,city string    age int8}func main() {    var person1 Person    person1.name="vita"    person1.city="ShangHai"    person1.age=27    fmt.Printf("p1=%v\n",person1)    fmt.Printf("p1=%#v\n",person1)}結果:p1={vita ShangHai 27}p1=main.Person{name:"vita", city:"ShangHai", age:27}Process finished with exit code 0

2.2.2匿名結構體
在定義一些臨時數據結構時,可以使用匿名結構體。

package mainimport "fmt"func main() {    var person2 struct{name string;age int}    person2.name="vita"    person2.age=27    fmt.Printf("p1=%v\n",person2)    fmt.Printf("p1=%#v\n",person2)}結果:p1={vita 27}p1=struct { name string; age int }{name:"vita", age:27}Process finished with exit code 0

2.2.3創建指針類型結構體
我們還可以通過new關鍵字對結構體進行實例化,得到的是結構體的地址。
package main

import "fmt"
type Person struct {
 name string
 city string
 age int
}
func main() {
 var person3 = new(Person)
 fmt.Printf("%T\n",person3)
 fmt.Printf("p3=%#v\n",person3)
 person3.name="vita"
 person3.age=27
 fmt.Printf("p3=%v\n",person3)
 fmt.Printf("p3=%#v\n",person3)
}

結果:
*main.Person
p3=&main.Person{name:"", city:"", age:0}
p3=&{vita 27}
p3=&main.Person{name:"vita", city:"", age:27}

Process finished with exit code 0

從打印結果可以看到,p3是一個結構體指針。
Go語言中支持對結構體指針直接使用"."訪問結構體成員。
2.2.4取結構體的地址實例化
使用&對結構體進行取地址操作相當于對該結構體進行了一次new實例化操作。

package mainimport "fmt"type Person struct {    name string    city string    age int}func main() {    var person4 = &Person{}    fmt.Printf("%T\n",person4)    fmt.Printf("p4=%#v\n",person4)    person4.name="vita"    person4.age=27    fmt.Printf("p4=%v\n",person4)    fmt.Printf("p4=%#v\n",person4)}結果:*main.Personp4=&main.Person{name:"", city:"", age:0}p4=&{vita  27}p4=&main.Person{name:"vita", city:"", age:27}Process finished with exit code 0

person4.name="vita"其實在底層是(* person4).name="vita",這是Go語言幫我們實現的語法糖。

上述內容就是Go語言中結構體如何使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

孟连| 瑞丽市| 龙游县| 措美县| 定州市| 高邑县| 绥中县| 白城市| 会东县| 汉川市| 滨海县| 关岭| 鄱阳县| 方正县| 嘉峪关市| 定西市| 沂南县| 马龙县| 浮山县| 温州市| 昌宁县| 东乡族自治县| 华宁县| 卓尼县| 扶风县| 镇宁| 清原| 保山市| 筠连县| 新源县| 苗栗市| 桃园县| 武定县| 长岛县| 柳林县| 佛教| 巫山县| 吉安市| 阳原县| 昌吉市| 云霄县|