[{"data":1,"prerenderedAt":154},["ShallowReactive",2],{"content:\u002F01-basics\u002F00-intro":3},{"title":4,"description":5,"path":6,"body":7},"Введение в основы Go","Этот модуль нужен, чтобы собрать рабочий фундамент языка. В Go немного синтаксиса, но почти каждая базовая вещь влияет на то, как потом пишутся функции, API, конкурентный код и архитектура сервиса.","\u002F01-basics\u002F00-intro",{"type":8,"value":9,"toc":147},"minimark",[10,14,17,33,36,41,74,76,80,86,89,91,95,109,111,115],[11,12,4],"h1",{"id":13},"введение-в-основы-go",[15,16,5],"p",{},[15,18,19,20,24,25,28,29,32],{},"Здесь важно не просто запомнить, что такое ",[21,22,23],"code",{},"int",", ",[21,26,27],{},"slice"," или ",[21,30,31],{},"interface",". Важно понять модель: что копируется, где лежат данные, когда значение изменяется на месте, а когда вы работаете только с копией заголовка.",[34,35],"hr",{},[37,38,40],"h2",{"id":39},"что-будет-внутри","Что будет внутри",[42,43,44,55,62,68,71],"ul",{},[45,46,47,48,24,51,54],"li",{},"скалярные типы, строки, ",[21,49,50],{},"rune",[21,52,53],{},"byte",", zero values;",[45,56,57,58,61],{},"массивы и слайсы: длина, ёмкость, backing array, ",[21,59,60],{},"append",";",[45,63,64,67],{},[21,65,66],{},"map",": устройство, ограничения ключей, порядок обхода;",[45,69,70],{},"структуры, методы, указатели, встраивание;",[45,72,73],{},"интерфейсы как контракт поведения, а не как иерархия классов.",[34,75],{},[37,77,79],{"id":78},"как-понять-что-модуль-освоен","Как понять, что модуль освоен",[15,81,82,83,85],{},"Вы уверенно объясняете, почему слайс может изменить исходный массив, почему ",[21,84,66],{}," нельзя читать и писать из разных горутин без синхронизации, чем метод на значении отличается от метода на указателе и почему маленький интерфейс обычно лучше большого.",[15,87,88],{},"Ещё один хороший признак: вы можете прочитать незнакомый Go-код без ощущения, что язык что-то скрывает. В Go многое явно, но эта явность начинает помогать только после понимания базовой модели данных.",[34,90],{},[37,92,94],{"id":93},"рабочие-ориентиры","Рабочие ориентиры",[42,96,97,100,103],{},[45,98,99],{},"Сначала думайте о значениях и копиях, потом о синтаксисе.",[45,101,102],{},"Не используйте интерфейс заранее. Вводите его там, где уже появился реальный потребитель поведения.",[45,104,105,106,108],{},"Если поведение слайса или ",[21,107,66],{}," кажется странным, нарисуйте: переменная -> заголовок -> данные.",[34,110],{},[37,112,114],{"id":113},"практика","Практика",[116,117,121,124,142],"quiz",{"answer":118,"id":119,"xp":120},"2","basics-intro-q1","10",[15,122,123],{},"Что лучше всего описывает главный фокус первого модуля?",[125,126,128],"template",{"v-slot:options":127},"",[42,129,130,133,136,139],{},[45,131,132],{},"Запомнить как можно больше синтаксических конструкций Go",[45,134,135],{},"Понять модель значений, копий, заголовков и данных",[45,137,138],{},"Сразу перейти к фреймворкам и HTTP-сервисам",[45,140,141],{},"Научиться писать только конкурентный код",[125,143,144],{"v-slot:explanation":127},[15,145,146],{},"Первый модуль строит модель данных Go: что копируется, где лежат данные, когда меняется исходное значение и где нужен указатель или синхронизация.",{"title":127,"searchDepth":148,"depth":148,"links":149},2,[150,151,152,153],{"id":39,"depth":148,"text":40},{"id":78,"depth":148,"text":79},{"id":93,"depth":148,"text":94},{"id":113,"depth":148,"text":114},1781022063329]