結構體是一種包含一個或多個變量的類型。它類似於一組變量,我們稱之為字段。這些字段可以具有不同的類型。
下面是一個結構體定義的示例:
type Person struct {
Name string
Age int
}
請注意,我們使用大寫字母命名字段,否則這些字段將對包私有。當您將結構體傳遞給其他包提供的函數(例如用於處理 JSON 或數據庫的函數)時,將無法訪問這些字段。
一旦我們定義了結構體,我們可以使用該類型初始化變量:
flavio := Person{"Flavio", 39}
並且我們可以使用點語法訪問個別的字段:
flavio.Age // 39
flavio.Name // "Flavio"
您還可以以以下方式從結構體初始化新變量:
flavio := Person{Age: 39, Name: "Flavio"}
這使您只能初始化一個字段:
flavio := Person{Age: 39}
或者甚至可以在不指定任何值的情況下初始化它:
flavio := Person{}
// 或者
var flavio Person
然後再設置其值:
flavio.Name = "Flavio"
flavio.Age = 39
結構體非常有用,因為您可以將不相關的數據進行分組,並將其傳遞給/從函數中,存儲在切片中等等。
定義後,結構體就像int
或string
一樣是一種類型,這意味著您還可以在其他結構體中使用它:
type FullName struct {
FirstName string
LastName string
}
type Person struct {
Name FullName
Age int
}