structide
struct定義結構,結構由字段(field)組成,每一個field都有所屬數據類型,在一個struct中,每一個字段名都必須惟一。函數
說白了就是拿來存儲數據的,只不過可自定義化的程度很高,用法很靈活,Go中很多功能依賴於結構,就這樣一個角色。code
Go中不支持面向對象,面向對象中描述事物的類的重擔由struct來挑。好比面向對象中的繼承,能夠使用組合(composite)來實現:struct中嵌套一個(或多個)類型。面向對象中父類與子類、類與對象的關係是is a
的關係,例如Horse is a Animal
,Go中的組合則是外部struct與內部struct的關係、struct實例與struct的關係,它們是has a
的關係。Go中經過struct的composite,能夠"模仿"不少面向對象中的行爲,它們很"像"。對象
定義struct繼承
定義struct的格式以下:接口
1type identifier struct {
string
2 field1 type1
it
3 field2 type2
數據類型
4 …
channel
5}// 或者type T struct { a, b int }
理論上,每一個字段都是有具備惟一性的名字的,但若是肯定某個字段不會被使用,能夠將其名稱定義爲空標識符_
來丟棄掉:
1type T struct {
2 _ string
3 a int}
每一個字段都有類型,能夠是任意類型,包括內置簡單數據類型、其它自定義的struct類型、當前struct類型自己、接口、函數、channel等等。