1、結構體
1.1、結構體類型
有時我們需要將不同類型的數據組合成一個有機的整體,如:一個學生有學號/姓名/性別/年齡/地址等屬性。顯然單獨定義以上變量比較繁瑣,數據不便於管理。
結構體是一種聚合的數據類型,它是由一系列具有相同類型或不同類型的數據構成的數據集合。每個數據稱為結構體的成員。
1.2、結構體普通變量初始化
示例:
package main //必須有個main包
import "fmt"
//定義一個結構體類型
type Student struct {
id int
name string
sex byte //字符類型
age int
addr string
}
func main() {
//順序初始化,每個成員必須初始化
var s1 Student = Student{1, "mike", 'm', 18, "bj"}
fmt.Println("s1 = ", s1)
//指定成員初始化,沒有初始化的成員,自動賦值為0
s2 := Student{name: "mike", addr: "bj"}
fmt.Println("s2 = ", s2)
}
執行結果:
s1 = {1 mike 109 18 bj}
s2 = {0 mike 0 0 bj}
1.3、結構體指針變量初始化
示例:
package main //必須有個main包
import "fmt"
//定義一個結構體類型
type Student struct {
id int
name string
sex byte //字符類型
age int
addr string
}
func main() {
//順序初始化,每個成員必須初始化, 別忘了& ,&取地址
var p1 *Student = &Student{1, "mike", 'm', 18, "bj"}
fmt.Println("p1 = ", p1)
//指定成員初始化,沒有初始化的成員,自動賦值為0
p2 := &Student{name: "mike", addr: "bj"}
fmt.Printf("p2 type is %T\n", p2) //main函數結構體
fmt.Println("p2 = ", p2)
}
執行結果:
p1 = &{1 mike 109 18 bj}
p2 type is *main.Student
p2 = &{0 mike 0 0 bj}
