Скрытое имя в Go
Имя с маленькой буквы остается внутри своего
пакета, снаружи его не вызвать. Компилятор
отклоняет обращение из main к такой
функции или полю.
Спрячем вспомогательную функцию в greet/greet.go:
package greet
func hello() string {
return "hello"
}
func Hello() string {
return hello()
}
Внутри пакета hello вызывают из Hello
без ограничений. Снаружи доступна только
Hello.
Попытка обратиться к hello из main
не собирается:
package main
import "example.com/app/greet"
func main() {
_ = greet.hello()
}
Сообщение компилятора указывает, что у
пакета greet нет экспортированного
имени hello. Исправление: вызвать
greet.Hello или переименовать функцию
с большой буквы, если она нужна снаружи.
Дан следующий код:
package main
import "example.com/app/greet"
func main() {
fmt.Println(greet.hello())
}
Скажите, соберется ли программа и почему.
В пакете note есть title и Title.
Перечислите, какие имена можно использовать
из main.
Допишите Hello в greet/greet.go,
чтобы она звала hello, а из main
печатался только результат Hello.