Go Champs exportés et non exportés (privés et publics)


Exemple

Les champs de structure dont les noms commencent par une lettre majuscule sont exportés. Tous les autres noms sont non exportés.

type Account struct {
    UserID      int    // exported
    accessToken string // unexported
}

Les champs non exportés ne sont accessibles que par code dans le même package. En tant que tel, si vous accédez à un champ depuis un autre package, son nom doit commencer par une lettre majuscule.

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
    }
}

Cependant, à partir du package de bank , vous pouvez accéder à UserId et à accessToken sans problème.

La bank paquets pourrait être implémentée comme ceci:

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
}