在Go語言中,結構體的字段可見性由字段名的首字母大小寫決定。如果字段名首字母大寫,則該字段為公開(Public),可以在包外部訪問;如果字段名首字母小寫,則該字段為私有(Private),只能在包內部訪問。
以下是一個示例:
package main
import (
"fmt"
"mypackage"
)
type myStruct struct {
PublicField string // 可以在包外部訪問
privateField string // 只能在包內部訪問
}
func main() {
s := myStruct{"Hello, public!", "Hello, private!"}
fmt.Println(s.PublicField) // 輸出:Hello, public!
// fmt.Println(s.privateField) // 編譯錯誤:不能在包外部訪問私有字段
mypackage.MyFunction(s)
}
在這個例子中,我們定義了一個名為myStruct
的結構體,其中包含兩個字段:PublicField
和privateField
。PublicField
的首字母大寫,因此它是公開的,可以在包外部訪問;privateField
的首字母小寫,因此它是私有的,只能在包內部訪問。
在main
函數中,我們創建了一個myStruct
實例,并嘗試訪問它的字段。我們可以成功訪問PublicField
,但是無法訪問privateField
,因為它在包外部是私有的。此外,我們還展示了如何調用包內的函數MyFunction
,并將myStruct
實例作為參數傳遞。