這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
一、結構體聲明和初始化:
/*聲明結構體*/type person struct { name string age int}/*初始化結構體,並賦給變數 per*/per := person {name : "eagle", age : 24}
二、匿名結構體聲明和初始化
per := struct { name string age int}{ name : "eagle", age : 24,}/*備忘: (1) 匿名結構體的初始化和聲明必須合并,不能拆分開 (2) 這裡的最後一個逗號(,)必須要有,否則會報錯*/
三、結構體匿名成員聲明和初始化
/*聲明結構體*/type person struct{ string int}/*初始化結構體,並賦給變數 per*/per := person {name : "eagle", age : 24}/*備忘:結構體內部限制成員類型不能相同,即type person struct{ string int}per := person {"eagle", “guangdong", 24}會拋出“duplicate field string”異常資訊,GO語言系統不會聰明地認為第一個成員和第二個成員都是string類型,第三個成員是int類型*/
四、結構體嵌套
/*聲明結構體*/type person struct { name string age int}type man struct { sex string person}/*初始化結構體,並賦給變數 man*/man := person {sex : "男", person : person {name : "eagle", age : 24}}
五、結構體方法
import "fmt"/*聲明結構體*/type person struct{ name string age int}/*判斷兩個人是否名字相同,值傳遞,傳回值為 bool*/func (per person) IsEqual(anoPer person) bool { anoPer.name = "john" return per.name == anoPer.name}/*交換兩個人名字,引用傳遞,無傳回值*/func swap(per* person, anoPer* person) { anoPer.name, per.name = per.name, anoPer.name}func main() {/*初始化結構體,並賦給變數 per*/perOne := person {name : "eagle", age : 24}perTwo := person {name : "john", age : 24}fmt.Println("PerOne:" + perOne.name)swap(&perOne, &perTwo)fmt.Println("PerOne:" + perOne.name)}