golang 結構體與指標

2022-08-15 19:18:11 字數 1326 閱讀 3043

1.結構體

結構體是一系列具有指定資料型別的資料型別 ,就是乙個結構體中儲存多個不同型別的資料字段 ,用於建立傳遞複雜資料結構

結構體可以理解為物件導向的模板 ,但是go並非物件導向 ,結構體只是一種新的資料型別

2.結構體建立

結構體例項的資料字段不賦值 ,預設就是該型別的零值

巢狀結構體可以完成更為複雜的操作 ,就是乙個結構體某個欄位是另乙個結構體型別

結構體可以使用 關鍵字var建立   

1

package main23

import (4"

fmt"5)

67 type computer struct

1314 type ven struct

1819

func main()

23 c1 :=computer

29var

c2 computer

30 fmt.println(c2.cpu=="") //

go會預設賦零值""

31 c2.vendor =v1

32 c2.cpu = "

core i7

"33 c2.mem = "三星"

34 c2.disk = "三星"

3536

fmt.println(c1.vendor,c2.disk)

3738

39 }

view code

3.公有私有

go的結構體和他本身的字段都可能被匯出使用 ,規定首字母大寫可以匯出

4.區分值引用與指標引用

值引用是建立副本 ,原始值與新值沒關係

指標引用是通過指標指向原值的記憶體位置 ,修改會影響原值

如果想通過引用修改原值使用指標 ,否則使用值引用

1

package main

23 import "

fmt"

45 type ven struct910

func main()

1516 b1 := &a1 //

指標引用

17 b2 :=a1

1819

fmt.println(a1.name,b1.name,b2.name)

20 a1.name = "微軟"

21fmt.println(a1.name,b1.name,b2.name)

22//

亞馬遜 亞馬遜 亞馬遜

23//

微軟 微軟 亞馬遜

24 }

view code

Golang結構體和指標

golang是一門很特殊的語言,雖然它出生比較晚,但是在很多地方卻和現在的程式語言有所不同。現在的程式語言要麼是函式式的 要麼是物件導向的,而go語言卻有指標 結構體這些概念,並解決了c語言的一些坑。從這個角度上說,golang可以看做c語言的填坑加強版。定義結構體和c語言一樣,使用struct關鍵...

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 ...

結構體與指標

struct s options opt 此時結構體內的資料都是乙個隨機數 struct s options opts struct s options malloc sizeof struct s options 8 此時各元素為預設初始化值,例如int就是0 一 結構體的定義方法 1 直接定義 ...