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

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

Неэкспортируемые идентификаторы в Go - это идентификаторы, которые начинаются со строчной буквы. Они доступны только внутри пакета, в котором объявлены. Это основное правило инкапсуляции в Go: все идентификаторы, начинающиеся с заглавной буквы, экспортируются, а со строчной - неэкспортируются.

Синтаксис

var unexportedVar int // неэкспортируемая переменная type unexportedType struct {} // неэкспортируемый тип func unexportedFunc() {} // неэкспортируемая функция

Пример

Давайте создадим неэкспортируемую переменную внутри пакета и попробуем обратиться к ней:

package main import "fmt" var internalValue int = 100 func main() { internalValue = 200 fmt.Println(internalValue) }

Результат выполнения кода:

200

Пример

Попробуем получить доступ к неэкспортируемой функции из другого пакета:

// В пакете example package example func unexportedHelper() string { return "internal helper" }

При попытке использования из другого пакета:

package main import "example" func main() { result := example.unexportedHelper() fmt.Println(result) }

Результат выполнения кода:

"cannot refer to unexported name example.unexportedHelper"

Пример

Рассмотрим работу с неэкспортируемыми полями структуры:

package main import "fmt" type Person struct { Name string // экспортируемое поле age int // неэкспортируемое поле } func main() { p := Person{Name: "John", age: 30} fmt.Println(p.Name) // fmt.Println(p.age) // ошибка: поле age не экспортируется }

Результат выполнения кода:

"John"

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

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