РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
900 of 1593 menu

Экспортируемые идентификаторы

Экспортируемые идентификаторы в 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"

Смотрите также

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить