【go筆記】結構體
阿新 • • 發佈:2021-11-20
go語言學習筆記之結構體
基礎
結構體是一系列不同或者相同資料型別的資料結構構成的資料集合,概念有點像面向物件中的類,但是更輕量。go語言的結構體跟c語言比較相似,都是通過struct
關鍵字去構建。
Go語言中宣告一個結構體的基本語法如下:
type 型別名 struct {
欄位1 欄位1型別
欄位2 欄位2型別
...
欄位n 欄位n型別
}
宣告一個結構體方法的基本語法如下:
func (物件名 結構體型別) 方法名(方法引數) 返回值型別 { // 方法體 } // 示例 type Student struct { Name string Age int } func (sth Student) CreateNew(name string,age int) Student { stu.Name = name sth.Age = age return stu } func main() { stu := Student{} stu = stu.CreateNew("zhangsan",33) fmt.Printf("%+v", stu) }
結構體巢狀
Go語言結構體的巢狀可以實現類似面向物件繼承的效果。
示例程式碼:
type Address struct { Province string City string Steet string } type Student struct { Name string Age int Address Address } func main() { stu1 := Student{} stu1.Name = "zhangsan" stu1.Age = 33 stu1.Address.Province = "AH" stu1.Address.City = "HF" stu1.Address.Street = "BuXing" fmt.Printf("%+v", stu1) }
匿名結構體
Go語言還支援一種匿名結構體,定義時不用type
關鍵字,於定義普通型別的變數一樣。如果在函式體外定義匿名結構體變數,那麼就需要var
關鍵字,但在函式體類可省略。基本語法如下:
var 變數名 struct {
欄位1 欄位1型別
欄位2 欄位2型別
...
欄位n 欄位n型別
}
匿名結構體一般用作全域性的配置資料儲存結構。示例程式碼:
// 匿名結構體 var mysqlConfig struct { user string password string host string port int } func main() { mysqlConfig.user = "root" mysqlConfig.password = "123456" mysqlConfig.host = "127.0.0.1" mysqlConfig.port = 3306 // 用短變數的方式定義一個匿名結構體,宣告結構的同時還要進行初始化 config2 := struct { user string password string host string port int }{"root","123456","192.168.0.2",3306} }