Golang基礎 結構體 方法

2021-10-24 23:57:20 字數 1956 閱讀 9851

type 結構體名稱 struct
type people struct
var peo people

fmt.print(peo)//輸出:

fmt.printf("%p",&peo)//會列印記憶體位址值

var peo people

//按照結構體中屬性的順序進行賦值,可以省略屬性名稱

peo = people

fmt.println(peo)

//明確指定給哪些屬性賦值.可以都賦值,也可以只給其中一部分賦值

peo = people

fmt.println(peo)

var peo people

peo.name="smallming"

peo.age=17

fmt.println(peo)

fmt.println(peo.name)

fmt.println(peo.age)

p1 := people

p2 := people

fmt.printf("%p %p\n", &p1, &p2) //輸出位址不同

fmt.println(p1 == p2)           //輸出:true

peo := new(people)

//因為結構體本質是值型別,所以建立結構體指標時已經開闢了記憶體空間

fmt.println(peo == nil) //輸出:false

//由於結構體中屬性並不是指標型別,所以可以直接呼叫

peo.name = "smallming"

fmt.println(peo)//輸出:&

peo1:=peo

peo1.name="佳明哥"

fmt.println(peo1,peo)//輸出:& &

//宣告結構體指標

var peo *people

//給結構體指標賦值

peo = &people

/*上面**使用短變數方式如下

peo:= &people

*/fmt.println(peo)

p1 := people

p2 := people

fmt.printf("%p %p\n", &p1, &p2) //輸出位址不同

fmt.println(p1 == p2)           //輸出:true

​ p3 := new(people)

p3 = &people

//結構體變數不能和指標比較,使用*指標取出位址中值

fmt.println(p1 == *p3) //輸出:true

​ p4 := &people

//指標比較的是位址

fmt.println(p3 == p4) //輸出:false

func (變數名 結構體型別) 方法名(引數列表) 返回值列表
從上面的解釋可以看出,官方給出可明確說明,方法類似於函式.方法歸屬於特定型別

package main

import (

"first/entity"

)type people entity.people

func main()

type people struct 

​func (p *people) run()

​func main()

peo.run()

fmt.println(peo.name,"跑完步後的體重是",peo.weight)//輸出:張三 跑完步後的體重是 16.9

}

golang結構體與方法

type people inte ce type student struct func stu student speak think string talk string else return func main think speak fmt.println peo.speak think ...

golang基礎 巢狀結構體

如下json返回值該如何解析?values 1612254395,40969232384 1612254995,39823257600 首先要構造出合適的結構體,根據以上返回值構造結構體如下 prometheus 響應體 type vectorresponse struct type prometh...

golang 為結構體新增方法

本節中,將會使用揹包作為 物件 將物品放入揹包的過程作為 方法 通過面向過程的方式和go語言中結構體的方式來理解 方法 的概念。面向過程沒有 方法 概念,只能通過結構體和函式,由使用者使用函式引數和呼叫方式來形成接近 方法 的概念,如下 package main type bag struct fu...