День 02 — глубже
Всё здесь необязательно. Материалы на английском помечены.
Тур по Go: переменные и константы (англ.)
- A Tour of Go, Basics — https://go.dev/tour/basics/8 Страницы 8–16: переменные,
:=, нулевые значения, вывод типа, константы. Код запускается прямо в браузере — удобно проверить предсказание, не открывая терминал.
Что говорит спецификация языка (англ.)
Спецификация — точное описание языка, по которому пишут компилятор. Читать её целиком рано, но отдельные разделы короткие:
- Assignment statements — https://go.dev/ref/spec#Assignment_statements В последних абзацах — ровно то, что было на пятой странице: присваивание нескольких переменных идёт в две фазы, сначала все значения справа, потом запись.
- Keywords — https://go.dev/ref/spec#Keywords Все 25 ключевых слов, которые нельзя брать в имена.
- Identifiers — https://go.dev/ref/spec#Identifiers Правила имён: из каких символов может состоять имя.
- IncDec statements — https://go.dev/ref/spec#IncDec_statements
x++иx--описаны как отдельные команды, а не выражения.
Почему Go такой строгий (англ.)
- Go FAQ: unused variables and imports — https://go.dev/doc/faq#unused_variables_and_imports Авторы языка объясняют, почему неиспользуемая переменная — ошибка, а не предупреждение.
- Go FAQ: why are ++ and -- statements — https://go.dev/doc/faq#inc_dec Почему в Go нельзя написать
x++внутри другого выражения. - Effective Go: Names — https://go.dev/doc/effective_go#names Соглашения об именах: короткие, «верблюдом», без подчёркиваний.
Мини-опыт: какой тип выведен
Завтра появится fmt.Printf. Заглянуть вперёд можно уже сегодня — в scratch/main.go:
✎ Наберите в файл
scratch/main.gopackage main
import "fmt"
func main() {
stock := 40
item := "Болт М6"
fmt.Printf("%T %T\n", stock, item)
}Пример · только посмотреть, набирать не нужно
stagiaire@lab:~/gocourse/day02/scratch$ go run .
int string%T печатает тип значения. Поменяйте 40 на 40.5 и запустите ещё раз — появится тип, о котором завтра.
Мини-опыт: трассировка на чужом коде
Возьмите любую программу со страниц дня 01 или 02, закройте вывод и заполните таблицу трассировки на бумаге по правилам четвёртой страницы. Потом скопируйте программу в scratch и запустите. Где вывод разошёлся с таблицей — найдите первый шаг, на котором значение в таблице неверное.