在Go語(yǔ)言中,結(jié)構(gòu)體的字段可見(jiàn)性由字段名的首字母大小寫(xiě)決定。如果字段名首字母大寫(xiě),則該字段為公開(kāi)(Public),可以在包外部訪問(wèn);如果字段名首字母小寫(xiě),則該字段為私有(Private),只能在包內(nèi)部訪問(wèn)。
以下是一個(gè)示例:
package main
import (
"fmt"
"mypackage"
)
type myStruct struct {
PublicField string // 可以在包外部訪問(wèn)
privateField string // 只能在包內(nèi)部訪問(wèn)
}
func main() {
s := myStruct{"Hello, public!", "Hello, private!"}
fmt.Println(s.PublicField) // 輸出:Hello, public!
// fmt.Println(s.privateField) // 編譯錯(cuò)誤:不能在包外部訪問(wèn)私有字段
mypackage.MyFunction(s)
}
在這個(gè)例子中,我們定義了一個(gè)名為myStruct
的結(jié)構(gòu)體,其中包含兩個(gè)字段:PublicField
和privateField
。PublicField
的首字母大寫(xiě),因此它是公開(kāi)的,可以在包外部訪問(wèn);privateField
的首字母小寫(xiě),因此它是私有的,只能在包內(nèi)部訪問(wèn)。
在main
函數(shù)中,我們創(chuàng)建了一個(gè)myStruct
實(shí)例,并嘗試訪問(wèn)它的字段。我們可以成功訪問(wèn)PublicField
,但是無(wú)法訪問(wèn)privateField
,因?yàn)樗诎獠渴撬接械?。此外,我們還展示了如何調(diào)用包內(nèi)的函數(shù)MyFunction
,并將myStruct
實(shí)例作為參數(shù)傳遞。