Go 結構體,結構體指標和方法

2022-03-18 14:45:19 字數 1539 閱讀 1185

結構體:講乙個或多個變數組合到一起形成新的型別,這個型別就是結構體,結構體是值型別

定義結構體和賦值

//learn_go/main.go

package main

import "fmt"

type people struct

func main()

fmt.printf("%p",&peo) //0x110040f0

//賦值

//第一種

peo = people

fmt.println(peo) //

//第二種

peo2 := people

fmt.println(peo2) //

//第三種

peo.name = "alice"

peo.age = 25

fmt.println(peo) //

}

由於結構體是值型別,在方法傳遞時希望傳遞結構體位址,可以使用結構體指標完成

可以結合new()函式建立結構體指標

//learn_go/main.go

package main

import "fmt"

type people struct

func main()

fmt.println(peo == nil) //false

peo.name = "derek"

peo.age = 22

fmt.println(peo) //&

peo2 := peo

fmt.println(peo2) //&

peo2.name = "jack"

fmt.println(peo, peo2) //& &

}

方法和函式語法比較像,區別是函式屬於包,通過包呼叫函式,而方法屬於結構體,通過結構體變數呼叫

預設是函式,隸屬於包,所以需要新增標識,告訴編譯器這個方法屬於哪個結構體 

(1)建立方法

//learn_go/main.go

package main

import "fmt"

type people struct

func (p people) run()

func main()

peo.run() //derek 正在跑步,當前體重為: 120

}

(2)修改值,用指標

//learn_go/main.go

package main

import "fmt"

type people struct

func (p *people) run()

func main()

peo.run() //derek 正在跑步,當前體重為: 120

fmt.println("跑完步後的體重為:",peo.weight) //跑完步後的體重為: 119

}

go 修改結構體方法 go結構體方法

golang中的方法是作用在特定型別的變數上,因此自定義型別,都可以有方法,而不僅僅是struct。定義格式 func var struct name funcname var0,var1.return type package main import fmt type test struct na...

Go結構體指標

package main import fmt 結構體指標 資料型別 int float bool string array 引用型別 slice map function pointer 建立指標 new 不是nil,空指標 指向了新分配的型別的記憶體空間,裡面儲存的是零值.1.結構體是值傳遞 f...

go 結構體指標方法與結構體方法的區別

package main import fmt type person struct func v person modifyname name string func main xiaoming.modifyname 小李 fmt.println xiaoming.name 輸出結果如下 c us...