Первое и очевидное, что вы узнаете, изучая новый язык программирования, — это, конечно же, программа «Hello World».
Следующий код — это минимально необходимый код для отображения «Hello Golang» в вашем терминале:
package main import ( "fmt" ) func main() { fmt.Println("Hello Golang") }
Это… с моей точки зрения много! Не потому, что в нем 71 символ и 7 строк кода. Нет — в этом коде есть много вещей, которые нужно объяснить.
Я имею в виду по сравнению с «Hello Kotlin»:
fun main() { println("Hello Kotlin") }
Вы можете возразить, что у нас есть
package
иimport
в Котлине. Но для этого примера это не требуется!
В любом случае, давайте пошагово разберем пример с Голанга.
Программа начинается с ключевого слова package
— как в Kotlin, когда вы помещаете свой код в ключевое слово package
. Точка входа — при ее запуске — объявляется в файле с main
package
, для которого требуется func
с именем main
.
Следующий фрагмент кода — это вызов import
. Это также похоже на Котлин. Вы должны объявить packages
, которые хотите использовать в своей программе.
Значение fmt
package
(должен быть «где-то» файл, который объявил package fmt
в своем заголовке) имеет func
с именем Println
.
Это интересный момент. import
«поиск» файлов, в заголовке которых указано package XY
. С этой информацией мы могли бы представить, что «где-то» есть файл, который выглядит следующим образом:
package fmt func Println(…) { }
Возможно, вы уже задавались вопросом, почему я написал "somewhere"
. Ну, потому что я не знаю, откуда он взялся и какие существуют «пакеты по умолчанию»!
Обратите внимание, что есть и другой стиль для import
, который выглядит как import "packageName"
. Преимущество использования стиля «вызов» заключается в том, что вы можете import
несколько пакетов одновременно, не повторяя ключевое слово import
:
import ( "fmt" "math" )
И последнее, но не менее важное: функция main
. Это — как я сказал выше — точка входа и первая функция, которая будет вызываться при запуске кода.
Пожалуйста, имейте в виду, что я объясню синтаксис func
в другом посте. В противном случае это взорвет этот блог.
Вызовы функций на самом деле очень похожи на Kotlin. Единственная разница здесь в том, что вы должны — в Golang — всегда ставить имя package
(которое мы объявили в разделе import
) перед вызовом func
. Это в Котлине более или менее необязательно. Потому что вы также можете использовать some.package.afunction()
вместо его импорта и напрямую вызывать функцию (расширения).
Источники обучения
Я узнал об этом, прочитав A Tour of Go. А точнее из основных разделов.