Ответ
В Go методы и поля, начинающиеся с заглавной буквы, экспортируются (доступны из других пакетов). С строчной буквы — не экспортируются (видны только внутри текущего пакета).
type Person struct {
name string // неэкспортируемое поле
Age int // экспортируемое поле
}
// Неэкспортируемый метод (доступен только в этом пакете)
func (p *Person) sayHello() {
fmt.Println("Hello!")
}
// Экспортируемый метод (доступен из других пакетов)
func (p *Person) GetName() string {
return p.name
}
Важно:
- Это правило применяется ко всем идентификаторам (типы, функции, переменные).
- Внутри пакета разницы в доступе нет.