您好,登錄后才能下訂單哦!
本篇文章為大家展示了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語言中結構體如何使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。