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

Область видимости функции

Область видимости функции определяет, из каких частей программы можно обратиться к функции. В Go видимость функции зависит от того, с какой буквы начинается её имя и на каком уровне она объявлена. Если функция объявлена с заглавной буквы (например, MyFunction), она экспортируется и доступна вне пакета. Если имя функции начинается со строчной буквы (например, myFunction), функция является неэкспортированной и доступна только внутри своего пакета.

Синтаксис

Объявление функции в Go имеет следующий синтаксис:

func FunctionName(params) returnType { // тело функции }

Видимость определяется первой буквой имени функции:

  • func ExportedFunc() — доступна из других пакетов
  • func unexportedFunc() — доступна только внутри своего пакета

Пример

Рассмотрим пример с двумя функциями в пакете: одна экспортированная, другая — нет. Файл main.go:

package main import "fmt" // ExportedFunction доступна вне пакета (начинается с заглавной) func ExportedFunction() { fmt.Println("This is an exported function") } // unexportedFunction доступна только внутри пакета (начинается со строчной) func unexportedFunction() { fmt.Println("This is an unexported function") } func main() { ExportedFunction() // работает unexportedFunction() // работает внутри того же пакета }

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

"This is an exported function" "This is an unexported function"

Пример

Если попытаться вызвать неэкспортированную функцию из другого пакета, возникнет ошибка компиляции. Предположим, у нас есть пакет mypkg с функцией unexportedFunc:

package mypkg func unexportedFunc() string { return "Hello from unexported function" }

При попытке использовать эту функцию в другом пакете:

package main import "mypkg" func main() { // Ошибка: cannot refer to unexported name mypkg.unexportedFunc // res := mypkg.unexportedFunc() }

Пример

Экспортированная функция может быть вызвана из другого пакета. Создадим пакет mypkg с экспортированной функцией:

package mypkg func ExportedFunc() string { return "Hello from exported function" }

Используем её в основном пакете:

package main import ( "fmt" "mypkg" ) func main() { res := mypkg.ExportedFunc() fmt.Println(res) }

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

"Hello from exported function"

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

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