Golang結(jié)構(gòu)體和指針

Golang是一門很特殊的語言,雖然它出生比較晚,但是在很多地方卻和現(xiàn)在的編程語言有所不同?,F(xiàn)在的編程語言要么是函數(shù)式的、要么是面向?qū)ο蟮?,而Go語言卻有指針、結(jié)構(gòu)體這些概念,并解決了C語言的一些坑。從這個(gè)角度上說,Golang可以看做C語言的填坑加強(qiáng)版。

結(jié)構(gòu)體

定義結(jié)構(gòu)體

定義結(jié)構(gòu)體和C語言一樣,使用struct關(guān)鍵字。在結(jié)構(gòu)體內(nèi)部定義它們的成員變量和類型。如果成員變量的類型相同還可以把它們寫到同一行。

type Person struct {
    age  int
    name string
}

初始化

初始化結(jié)構(gòu)體需要使用一個(gè)特殊一點(diǎn)的語法,這就是結(jié)構(gòu)體字面量。在結(jié)構(gòu)體字面量中,可以按照順序初始化結(jié)構(gòu)體、也也可以按照關(guān)鍵字初始化結(jié)構(gòu)體。如果按照關(guān)鍵字初始化結(jié)構(gòu)體,可以只指定部分值,未指定的值將會使用默認(rèn)值來初始化。

p1 := Person{24, "易天"}
p2 := Person{age: 24, name: "易天"}
p3 := Person{age: 24}
p4 := Person{name: "張三"}
fmt.Println(p1, p2, p3, p4)

訪問結(jié)構(gòu)體

最后要說的就是訪問結(jié)構(gòu)體了。結(jié)構(gòu)體的成員都是公有的,所以可以直接用點(diǎn)號.訪問。

p1.age = 26
p1.name = "王五"
fmt.Println(p1)

指針

Go的指針

如果學(xué)習(xí)過C語言的話,對指針的概念應(yīng)該會比較熟悉。在Go語言中,直接砍掉了最復(fù)雜的指針運(yùn)算的部分,只留下了獲取指針(&運(yùn)算符)和獲取對象(*運(yùn)算符)的運(yùn)算。

a, b := 3, 5
pa, pb := &a, &b
fmt.Println(*pa, *pb)

隱式解引用

對于一些復(fù)雜類型的指針, 如果要訪問成員變量的話,需要寫成類似(*p).field的形式,Go提供了隱式解引用特性,我們只需要p.field即可訪問相應(yīng)的成員。

p1 := &Person{name: "易天", age: 24}
fmt.Println((*p1).name)
fmt.Println(p1.name)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容