久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Go語言中結構體如何使用

147次閱讀
沒有評論

共計 2418 個字符,預計需要花費 7 分鐘才能閱讀完成。

本篇文章為大家展示了 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 語言中結構體如何使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-01發表,共計2418字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 高唐县| 天长市| 平南县| 定远县| 枞阳县| 阳春市| 宾川县| 桃源县| 黔南| 抚顺县| 两当县| 镇康县| 天全县| 阿巴嘎旗| 宁陕县| 陕西省| 阳江市| 扎囊县| 行唐县| 东台市| 古丈县| 收藏| 台湾省| 黔南| 新营市| 文昌市| 平潭县| 如东县| 新竹市| 怀来县| 盘山县| 宁武县| 彭山县| 定州市| 盐津县| 东阳市| 正蓝旗| 德格县| 奉化市| 宜宾市| 浏阳市|