В Go нет ключевых слов public/private. Экспорт определяется регистром первой буквы:
- Заглавная → экспортировано (видно из других пакетов)
- Строчная → неэкспортировано (только внутри пакета)
package user
func CreateUser() {} // экспортирована — доступна как user.CreateUser()
func validateAge() {} // не экспортирована — только внутри пакета user
type User struct {
Name string // экспортировано
email string // не экспортировано
}
Это касается всего: функций, типов, переменных, констант, полей структур, методов. Простое и однозначное правило — увидел заглавную букву, значит публичный API.