Экспортируемые идентификаторы
Экспортируемые идентификаторы в Go - это имена, которые начинаются с заглавной буквы и доступны для использования в других пакетах. К ним относятся типы, функции, переменные и константы. Первый параметр определяет имя идентификатора, второй параметр указывает на необходимость экспорта - идентификатор должен начинаться с заглавной буквы.
Синтаксис
type ExportedType struct {
ExportedField int
unexportedField int
}
func ExportedFunction() {}
func unexportedFunction() {}
const ExportedConst = 42
const unexportedConst = 42
var ExportedVar = 10
var unexportedVar = 10
Пример
Давайте создадим пакет с экспортируемыми и неэкспортируемыми идентификаторами:
package mypackage
type Person struct {
Name string
age int
}
func (p Person) GetName() string {
return p.Name
}
func (p Person) getAge() int {
return p.age
}
var PublicVar = "public"
var privateVar = "private"
Результат выполнения кода:
"package mypackage created with exported and unexported identifiers"
Пример
Теперь используем экспортируемые идентификаторы в основном пакете:
package main
import (
"fmt"
"mypackage"
)
func main() {
p := mypackage.Person{Name: "Alice"}
fmt.Println(p.GetName())
fmt.Println(p.PublicVar)
}
Результат выполнения кода:
"Alice"
"public"
Пример
Попробуем обратиться к неэкспортируемым идентификаторам - это вызовет ошибку компиляции:
package main
import (
"fmt"
"mypackage"
)
func main() {
p := mypackage.Person{Name: "Alice"}
fmt.Println(p.age)
fmt.Println(p.privateVar)
}
Результат выполнения кода:
"cannot refer to unexported field age in struct literal"
Смотрите также
-
идентификаторы
неэкспортируемые идентификаторы,
которые доступны только внутри своего пакета -
область видимости
пакетная область видимости,
которая определяет доступность идентификаторов в пакете -
область видимости
файловая область видимости,
которая ограничивает видимость идентификаторов файлом -
функцию
main функция,
которая является точкой входа в программу