Go基礎(複雜型別) 結構體

2021-08-20 04:22:33 字數 1585 閱讀 4464

乙個結構體(struct)就是乙個欄位的集合。

(而 type 的含義跟其字面意思相符。)

下面來寫乙個簡單的例子:

package main

import

"fmt"

/** * 乙個結構體就是乙個欄位的集合

*/type vertex struct

func main() )

}

輸出結果:

結構體欄位使用點號來訪問。

package main

import

"fmt"

type vertex2 struct

func main()

//這邊輸出的結果是6,3

fmt.println(v.x, v.y)

//這邊從新給結構體中的x賦值,x=7

v.x =7

//輸出x=7

fmt.println(v.x)

}

結構體欄位可以通過結構體指標來訪問。

如果我們有乙個指向結構體的指標 p,那麼可以通過 (*p).x 來訪問其欄位 x。不過這麼寫太囉嗦了,所以語言也允許我們使用隱式間接引用,直接寫 p.x 就可以。

package main

import

"fmt"

type vertex3 struct

func main()

//這個是輸出實際的結構體的值,所以

fmt.println(v)

//將結構體給p做引用,p是乙個指向結構體的指標

p := &v

//輸出結果有引用的結果,有乙個&,&

fmt.println(p)

//給結構體中的x賦值為1e9,這個表示1後面跟著9個0

p.x =1e9

//輸出結果

fmt.println(v)

}

輸出結果:

&

結構體文法通過直接列出欄位的值來新分配乙個結構體。

使用 name: 語法可以僅列出部分字段。(欄位名的順序無關。)

特殊的字首 & 返回乙個指向結構體的指標。

package main

import

"fmt"

//定義乙個結構體

type vertex4 struct

var (

//給x、y都賦值

v1 = vertex4 // has type vertex

//給x賦值為1,y未賦值,預設為0

v2 = vertex4 // y:0 is implicit

//x、y都不賦值,預設都為0

v3 = vertex4{} // x:0 and y:0

//指標的方式去賦值

p = &vertex4 // has type *vertex

)func main()

好了,這一次的結構體文法就是這樣子了。

結構體(複雜型別)

1 c語言基本型別 字元型,整型,浮點型 2 結構體 複雜型別 自定義型別 3 定義變數 為了分配空間 型別 變數名 注 分配空間編譯器根據型別自動分配 4 初始化 定義變數同時賦值 5 結構體 1 結構體 自定義 的型別 struct 型別名 2 無巢狀結構體 所有屬性都是基本型別 定義人的型別 ...

Go基礎(複雜型別) 對映

對映將鍵對映到值。對映的零值為 nil nil 對映既沒有鍵,也不能新增鍵。make 函式會返回給定型別的對映,並將其初始化備用。package main import fmt 定義乙個構造 type vertex5 struct 定義乙個map,這個map的鍵是string型別的 var m ma...

Go基礎(複雜型別) 函式值

函式也是值。它們可以像其它值一樣傳遞。函式值可以用作函式的引數或返回值。一 下面來看乙個函式值的例子 package main import fmt math func compute fn func float64,float64 float64 float64 func main fmt.pri...