Golang Struct 宣告和使用

2022-02-21 02:37:43 字數 2624 閱讀 5081

golang struct 宣告和使用

go可以宣告自定義的資料型別,組合乙個或多個型別,可以包含內建型別和使用者自定義的型別,可以像內建型別一樣使用struct型別

struct 宣告

具體的語法

type identifier struct
例子

package main

import (

"fmt"

)type rectangle struct

func main() )

}

struct 例項化的方法

點運算子

可以使用點運算子訪問結構體中的資料值

type rectangle struct 

}func main()

type rectangle struct 

func main()

fmt.println(rect1)

var rect2 = rectangle

fmt.println(rect2)

rect3 := rectangle

fmt.println(rect3)

rect4 := rectangle

fmt.println(rect4)

rect5 := rectangle

fmt.println(rect5)

}

使用new關鍵字

type rectangle struct 

func main()

使用&運算子

type rectangle struct 

func main() //此時不能省略任何值

fmt.println(rect1)

var rect2 = &rectangle{}

rect2.length = 10

rect2.color = "red"

fmt.println(rect2)

var rect3 = &rectangle{}

(*rect3).breadth = 20

(*rect3).color = "blue"

fmt.println(rect3)

}

struct 練習

struct中的tag標籤

type employee struct 

func main() `

emp1 := new(employee)

err := json.unmarshal(byte(json_str), emp1)

if err != nil

fmt.println(emp1)

emp2 := new(employee)

emp2.firstname = "john"

emp2.lastname = "lee"

emp2.city = "shanghai"

jsonstr, _ := json.marshal(emp2)

fmt.printf("%s", jsonstr)

}

輸出結果

&

內嵌的struct型別

func main() 

type employee struct

e := employee,

salary,},}

fmt.println(e.firstname,e.lastname)

fmt.println(e.age)

fmt.println(e.email)

fmt.println(e.monthlysalary[0])

fmt.println(e.monthlysalary[1])

}

輸出結果

kevin woo

[email protected]

struct新增方法

type salary struct 

type employee struct

func (e employee) empinfo() string

return "-------------------"

}func main() ,

salary,},}

fmt.println(e.empinfo())

}

輸出結果

kevin woo

[email protected]

***************==

15000

5000

2000

***************==

16000

6000

2100

-------------------

golang struct繼承測試

記錄下golang struct的繼承關係 package main import fmt func main type a struct type b struct func a a afunc func a a bfunc func b b afunc func b b cfunc func t...

golang struct怎樣遞迴自己

type s struct乙個命名為s的結構體型別將不能再包含s型別的成員 因為乙個聚合的值不能包含它自身。該限制同樣適應於陣列。但是s型別的結構體可以包含 s指標型別的成員,這可以讓我們建立遞迴的資料結構,比如鍊錶和樹結構等。如果結構體沒有任何成員的話就是空結構體,寫作struct 它的大小為0,...

宣告和定義

宣告 向計算機介紹名字,它說,這個名字是什麼意思 而 定義 為這個名字分配 儲存空間。無論涉及到變數時還是函式時含義都一樣。無論在哪種情況下,編譯器都在 定義 處分配儲存空間。對於變數,編譯器確定這個變數佔多少儲存單元,並在記憶體中產生存放它們 的空間。對於函式,編譯器產生 並為之分配儲存空間。函式...