Golang結構體知識

2021-08-24 17:39:21 字數 821 閱讀 9829

在看docker原始碼時,碰到了這個語句:

container.lock()

看到上面直接對struct container進行上鎖時,我翻了一下這個結構體,發現沒有定義任何鎖啊,怎麼上鎖的咧。於是我就翻了一下這個結構

體的一些子屬性,發現了state的定義

// container/container.go

type container struct

// container/state.go

type state struct

waitremove chan struct{}

} 當時看到這我就納悶了(go沒學過,沒寫過,完全新手),咋就直接訪問到state裡面的內容了。

看到沒,container結構體裡面定義了*state之後,就可以直接訪問state裡面的成員,這有點類似繼承啥玩意的。接下來我們就做個測試,可以瞅瞅。

package main

import (

「fmt」

「sync」

) type state struct

type container struct

func newstate() *state

} func (c *container) getinfo() error

func main()

c.getinfo()

c.lock()

fmt.println(「second lock」)

c.unlock()

} 執行上面的程式,就可以看到container可以直接訪問到state裡面的鎖。

Golang 學習 結構體

結構體定義 結構體是一種資料型別。定義型別 地位等價於 int byte bool string.通常放在全域性位置 type person struct 注意 結構體內不能賦初值,不能用 var 修飾。普通變數定義和初始化 普通變數的賦值和使用 使用 索引成員變數。var man person m...

Golang結構體初探

go語言中的基礎資料型別可以表示一些事物的基本屬性,但是當我們想表達乙個事物的全部或部分屬性時,這時候再用單一的基本資料型別明顯就無法滿足需求了,go語言提供了一種自定義資料型別,可以封裝多個基本資料型別,這種資料型別叫結構體,英文名稱struct。也就是我們可以通過struct來定義自己的型別了。...

Golang結構體和指標

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