Go語(yǔ)言結(jié)構(gòu)體字段可見(jiàn)性如何定

小樊
81
2024-11-08 13:18:13

在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è)字段:PublicFieldprivateField。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ù)傳遞。

0