結構體是一種聚合型別,由0個或者多個任意型別的值聚合的實體,每個值稱為結構體的成員。
結構體的成員首字母大小寫也遵循可匯出的規則。首字母大寫的成員可匯出。
結構體一般和json繫結使用,結構體成員首字母大寫則對json可見。
.操作可以獲取結構體的成員。
結構體是值型別。
結構體的零值是每個成員對應型別的零值
沒有任何成員的結構體是空結構體:struct
。它的大小為0,在程式設計中有很大的價值。
我在使用map模擬set的時候,會把空結構體作為value:s:=make(map[string]struct{})
結構體字面量
字面量推薦寫出成員名字和對應值得鍵值對,防止以後成員順序變更導致**出錯。
不顯式賦值的成員是預設零值。
package main
import
("fmt"
)func
main()
var myself=person
fmt.
println
("myself:"
,myself)
//myself:
fmt.
printf
("myself:%+v"
,myself)
//myself:
}
結構體通常以指標的方式處理
var myself =
&person
結構體可以做相等比較,所有成員都相等才會==
結構體嵌入
package main
import
("fmt"
)func
main()
type person struct
var myself=person,}
fmt.
println
("myself.mycompany.name:"
,myself.mycompany.name)
我的公司
fmt.
printf
("myself:%+v"
,myself)
//myself: name:wz age:18}
}
結構體匿名成員
匿名成員不支援顯式成員名字的字面量賦值,但是可以直接字面量賦值,可以當做根成員訪問到。
type company struct
type person struct
var myself=
&person
myself.companyname //不要成員名稱重複
json和結構體
encoding/json 包可以使用。
具體的使用方法,在連線mysql使用gorm第三方庫的時候可以再進一步的分析。
go語言基礎 匿名結構體
結構體和函式一樣,也可以使用匿名結構體 使用匿名結構體也要直接賦值給變數,不要沒法使用 匿名結構體和匿名字段 沒有名字的結構體 a struct func type a struct b a b.string,b.int 匿名字段可以理解為欄位名和字段型別一致 packagemain import ...
go語言基礎 結構體巢狀
go語言當中的聚合和繼承都是模擬出來的,子類是可以使用父類裡的字段或功能 結構體的巢狀 type a struct type b struct type c struct b b b.a.name,c c b.name,packagemain import fmt typeperson5struct...
go語言結構體
go語言陣列可以儲存同一型別的資料 但在結構體中我們可以為不同項定義不同的資料型別 結構體是由一系列具有相同的型別或者不同型別的資料構成的資料集合 1.定義結構體 結構體定義需要使用type和struct語句。struct語句定義乙個新的資料型別,結構體中有乙個或者多個成員。type語句設定了結構體...