匯出與未匯出的欄位(私有與公共)
將匯出名稱以大寫字母開頭的結構欄位。所有其他名稱都未被匯出。
type Account struct {
UserID int // exported
accessToken string // unexported
}
未匯出的欄位只能由同一包中的程式碼訪問。因此,如果你要訪問其他包中的欄位,則其名稱需要以大寫字母開頭。
package main
import "bank"
func main() {
var x = &bank.Account{
UserID: 1, // this works fine
accessToken: "one", // this does not work, since accessToken is unexported
}
}
但是,從 bank
包中,你可以無問題地訪問 UserId 和 accessToken。
包 bank
可以像這樣實現:
package bank
type Account struct {
UserID int
accessToken string
}
func ProcessUser(u *Account) {
u.accessToken = doSomething(u) // ProcessUser() can access u.accessToken because
// it's defined in the same package
}