Share This
Связаться со мной
Крути в низ
Categories
//🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Важнейшей ценностью для создателей Go была простота. Код на этом языке легко писать, легко читать и в результате – проще поддерживать. В кратком руководстве мы окунемся в основы Go за полчаса. Обсудить

samouchitel dlja nachinajushhih kak osvoit go s nulja za 30 minut a974695 - 🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Установка Go

Заходим на официальный сайт Go.

samouchitel dlja nachinajushhih kak osvoit go s nulja za 30 minut 543df5e - 🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Нажимаем на Download Go.

samouchitel dlja nachinajushhih kak osvoit go s nulja za 30 minut 15748a6 - 🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Выбираем версию для своей операционной системы и скачиваем.

Пользователям Windows нужно запустить установщик. Если вы используете Linux, придется распаковать скачанный архив в /usr/local/go и экспортировать путь /usr/local/go/bin в переменную среды $PATH . Получиться должна примерно следующая структура папок:

samouchitel dlja nachinajushhih kak osvoit go s nulja za 30 minut 5d4be7b - 🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Чтоб убедиться в успешной установке введите команду go version в консоли или терминале:

samouchitel dlja nachinajushhih kak osvoit go s nulja za 30 minut 9e4baa3 - 🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Установка редактора кода

Go поддерживается в различных редакторах кода (IDE), к примеру:

  • Goland
  • Visual Studio Code
  • vim

Полный список IDE доступен по сылке: https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins

Создание проекта

Создадим директорию helloworld. Перейдем в нее и выполним команду:

         go mod init helloworld     

Должен появиться файл с названием go.mod.

Код на Go лежит в пакетах, а пакеты группируются в модули. Модуль – это набор пакетов Go с файлом go.mod в корне. Этот файл определяет путь модуля и набор импортируемых модулей.

Далее создадим файл main.go и запишем в него следующий код:

main.go

         package main  func main() {   println("Hello World") }      

Компиляция и запуск программы

Чтобы запустить код, откройте консоль или терминал. Далее перейдите в каталог, где расположен файл main.go и выполните команду:

         go run main.go     

Результат работы программы будет следующим:

samouchitel dlja nachinajushhih kak osvoit go s nulja za 30 minut 4e14797 - 🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Вы написали первую программу на Go, поздравляем!

Давайте разберем, что здесь происходит:

  • Функция main – входная точка программы. С нее основная программа начинается и в ней же завершается.
  • println – функция, выводящая текст на экран консоли. Для вызова используется следующий синтаксис: название функции + открывающая круглая скобка + аргументы функции + закрывающая круглая скобка + операторные скобки {}.
  • По достижении последней фигурной скобки функции main программа завершается.

Код, листинги которого будут приведены ниже, должны располагаться внутри фигурных (операторных) скобок функции main. В примерах функция main будет опущена для краткости.

Переменные

Переменные в Go характеризуются названием и типом, они должны объявляться до первого использования.

В Go нельзя объявить переменную и не использовать ее – программа не соберется.

Объявление переменной в Go:

         var number int     

Мы объявили переменную number с типом int. int – тип переменной, которая хранит целое число.

Базовые типы данных:

  • bool
  • string
  • int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
  • byte // псевдоним для uint8
  • rune // псевдоним для int32
  • float32 float64
  • complex64 complex128

При объявлении переменной устанавливается ее начальное значение. Для int это 0, для float – 0.0, для string – “” (пустая строка), для boolfalse.

Если начальное значение переменной известно во время объявления, можно воспользоваться краткой записью:

         number := 0 // эквивалентно var number = 0      

Чтобы записать значение в переменную после ее объявления, воспользуйтесь оператором =:

         var number, secondNumber int number = 15 secondNumber = number println(number)       // Вывод: 15 println(secondNumber) // Вывод: 15      

Над переменными можно производить операции с помощью операторов. Например, числа можно сравнить, а строки конкатенировать.

Список операторов Go:

samouchitel dlja nachinajushhih kak osvoit go s nulja za 30 minut 5dd8874 - 🏃 Самоучитель для начинающих: как освоить Go с нуля за 30 минут?

Управляющие конструкции

Для управления тем, какие строки кода исполнятся и в каком порядке, существуют специальные конструкции. Давайте перечислим основные:

  • Следование
  • Условие
  • Циклы

Следование

Весь код исполняется последовательно, строка за строкой.

Условие

Для исполнения участка кода в зависимости от условия используется условная конструкция if:

         number := 15 secondNumber := 10 if number < secondNumber {   println("первое число меньше второго") }      

Сообщение не будет выведено на экран, так как условие ложно. На месте условия может использоваться все, результатом чего будет значение типа bool.

Чтобы определить код, который выполнится при невыполнении ни одного условия можно добавить else:

         if number < secondNumber {   println("первое число меньше второго") } else if number > secondNumber {   println("второе число меньше первого") } else {   println("числа равны") }      

Дополнительно к конструкции управления if имеется конструкция switch, работающая подобным образом:

         switch 200 { case 100:   println("число равно 100") case 200:   println("число равно 200") // будет выведено это }      

switch получает значение 200 и ищет case, в котором значения совпадают и выполняет только определенный участок кода.

switch также может использоваться как замена if. Перепишем пример с if:

         switch { case number < secondNumber:   println("первое число меньше второго") case number > secondNumber:   println("второе число меньше первого") default:   println("числа равны") }      

Роль else здесь играет слово default. Оно также будет выполнено при невыполнении ни одного из условий.

Циклы

Обратите внимание: для повторения участков кода в Go используется только цикл for, который может принимать разные формы:

         for i := 1; i <= 10; i++ {   println(i) }      

Этот цикл распечатает значения от 1 до 10.

Если нужен цикл без счетчика, нужно опустить первую и третью части цикла for вместе с точкой запятой:

         for number < secondNumber {   number = number + 1 }      

На каждом повторении цикла будет проверяться заданное условие. Пока условие истинно, цикл будет продолжаться. Как только условие станет ложным, он прервется.

Для бесконечного цикла можно опустить условие:

         for {   println("Бесконечный цикл") }      

Чтобы остановить цикл, используется ключевое слово break:

         i := 0 for {   println("Бесконечный цикл")   if i == 10 {      break   }   i++ }      

При достижении конструкции break цикл будет завершен.

Внутри цикла также можно использовать специально слово continue. Оно отличается от break тем, что не сразу завершает цикл, а лишь пропускает оставшийся код цикла и начинает новое повторение.

Массивы

Массив – это последовательная группа ячеек памяти, имеющих одинаковое имя и одинаковый тип. Простое определение – набор упорядоченных элементов.

Объявление массива:

         var numbers [3]int     

Обращение к элементам массива производится по имени массива и индексу элемента. Элементы массива индексируются с нуля.

Заполнение массива значениями:

         numbers[0] = 10 numbers[1] = 11 numbers[2] = 12      

Если начальное значение массива известно при объявлении, можно воспользоваться литералом объявления массива:

         var numbers [3]int = [3]int{10, 11, 12}     

Для избежания лишнего кода воспользуемся кратким объявлением:

         numbers := [3]int{10, 11, 12}     

Размер массива статичен и не может меняться во время выполнения программы. Для этих целей используются слайсы.

Слайсы

Слайс является более удобной альтернативой массиву. Объявление слайса отличается от объявления массива только отсутствием размера:

         numbers := [3]int{10, 11, 12} // массив numbers := []int{10, 11, 12} // слайс      

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

         numbers = append(numbers, 13) // добавление одного элемента numbers = append(numbers, 14, 15) // добавление двух элементов      

Функции

Для переиспользования часто используемого кода нужны функции.

Функция – это названный кусок кода, который может вызываться по имени. Мы уже использовали функцию println для вывода значений на экран.

Функция должна быть объявлена вне функции main:

         func НазваниеФункции(первыйАргумент int, второйАргумент int) (возвращаемоеЗначение int) {   // тело функции   return 0 }      

После ключевого слова func указывается название функции. Далее в круглых скобках аргументы, которые принимает функция. После закрывающей круглой скобки указывается одно или несколько возвращаемых значений функции, а затем следует код функции в операторных скобках.

Функция Sum складывает два числа и возвращает результат:

         func Sum(a, b int) int {   return a + b }      

Функция SumAndDivide возвращает как сумму, так и частное чисел:

         func SumAndDivide(a, b int) (int, int) {   return a + b, a / b }      

Обе функции доступны в функции main:

         func main() {   sum := Sum(1, 2)   println(sum) // 3   sum, division := SumAndDivide(4, 2)   println(sum)      // 6   println(division) // 2 }      

Пакеты

Писать код большой программы в одном файле неудобно. Тем более переиспользовать этот код нельзя. Поэтому код разбивается на пакеты – наборы файлов с расширением .go и кодом, который можно импортировать и переиспользовать. Стандартная библиотека языка Go содержит много часто используемых и важных пакетов. Например, в пакете strings содержатся функции для работы со строками.

Импорт и использование пакета strings:

         package main  import "strings"  func main() {   upper := strings.ToUpper("заглавные буквы")   println(upper) // Output: ЗАГЛАВНЫЕ БУКВЫ }      

Ключевое слово import нужно для импорта используемых пакетов. Чтобы использовать функции из пакета strings, нужно:

  • написать название пакета;
  • поставить точку;
  • вызвать нужную функцию из пакета.

Первое серверное приложение “Hello Web”

В пакете http содержится все необходимое для создания веб-сервера.

         package main  import (   "log"   "net/http" )  func HelloWeb(w http.ResponseWriter, r *http.Request) {   w.Write([]byte("Hello Web!")) }  func main() {   http.HandleFunc("/", HelloWeb)   err := http.ListenAndServe("localhost:9999", nil)   if err != nil {      log.Println("listen and serve:", err)   } }      

Запустите код. Далее откройте браузер и перейдите по адресу http://localhost:9999/. Вы получите сообщение “Hello Web!

Функция http.HandleFunc устанавливает функцию HelloWeb, по пути /, а http.ListenAndServe запускает сервер по указанному адресу.

Если вы перейдете по указанному адресу, вызовется функция HelloWeb. Функция принимает два аргумента – сам запрос и переменную, позволяющую ответить на запрос. В строке w.Write([]byte(“Hello Web”)) мы отвечаем на запрос обычной строкой.

Поздравляем, вы написали ваш первый веб-сервер на Go!

Литература

  • «Изучаем Go» – Head First, Джек Макгаврен.
  • «Язык программирования Go» – Алан А. А. Донован, Брайан У. Керниган.
  • «Go на практике» – Батчер Мэтт, Фарина Мэтт.

Онлайн ресурсы

  • https://golang.org/ – официальный сайт.
  • https://tour.golang.org/welcome/1 – тур по языку Go.
  • https://go.dev/ – оффициальный портал об экосистеме языка.

Go в “Библиотеке Программиста”

  • телеграм-канал Библиотека Go-разработчика
  • подписывайтесь на тег Go, чтобы получать уведомления о новых постах на сайте

***

Мы пробежались по основам Go: переменные, операторы, управляющие конструкции, функции.

Ценностями языка являются:

  • Простота
  • Эффективность
  • Надежность
  • Продуктивность
  • Дружелюбность

Go современный, широко используемый и востребуемый язык программирования, который стоит начать изучать прямо сейчас.

***

Go используется в Google, Netflix, Facebook, Paypal, Microsoft и во многих других компаниях. Этот язык доступен каждому, но научиться создавать на нем профессиональные, безопасные и масштабируемые сервисы можно только перенимая знания опытных специалистов. Обратите внимание на современный курс «Разработка на Go» образовательной онлайн-платформы GeekBrains, который подойдет новичкам и действующим программистам на других языках. Эксперты из ведущих российских компаний поделятся со слушателями опытом разработки реальных систем на Go. В процессе обучения вы сделаете 5 проектов для портфолио, а после завершения курса получите удостоверение о повышение квалификации и помощь в трудоустройстве.

Интересно, хочу попробовать

  • 0 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

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

    Рубрики

    About Author 01.

    Roman Spiridonov
    Roman Spiridonov

    Привет ! Мне 38 лет, я работаю в области информационных технологий более 4 лет. Тут собрано самое интересное.

    Categories 05.

    © Speccy 2020 / All rights reserved

    Связаться со мной
    Close