Руководство для начинающих в Го

Go
Руководство для начинающих в Го

В эпоху облачных вычислений самым популярным языком программирования является Go.На Go написаны многие облачные инфраструктуры, не говоря уже о таких убийцах, как Docker и kubernetes. Для бэкенд-инженеров это самый полезный навык для изучения.

Эта статья подойдет для людей с определенной подготовкой, т.к. Go не подходит для начинающих в программировании, для начинающих в программировании рекомендуется начинать с языка Python.

Если у вас есть определенная база программирования, вам будет намного проще выучить go, особенно если у вас есть база на языке C, изучение языка Go будет намного быстрее.

В Go очень мало грамматик и очень лаконичные ключевые слова, но тем, кто давно пишет на объектно-ориентированных языках, таких как Java, нужно отказаться от присущей Java идеи объектно-ориентированного подхода. -ориентированное программирование.Схемы, понятия классов нет, а интерфейсы совсем другие, чем в Java. Для тех, кто знаком с Java, требуется некоторое время, чтобы привыкнуть.

Эта статья не будет охватывать конкретное руководство по Go. Ее можно рассматривать как дорожную карту, и для меня это лучший способ быстро начать работу с языком Go.

Прежде чем читать следующий контент, я предполагаю, что вы освоили язык разработки, занимались веб-разработкой и знакомы с основами использования Git.

1. Начало работы

1.1 Основное введение

Конфигурация среды

Прежде чем писать код, вам нужно сначала установить Go.Go поддерживает такие платформы, как Linux, macOS, Windows и т. д., которые можно найти здесь.скачатьИнсталляционный пакет.

И macOS, и Windows предоставляют бинарные установочные пакеты, а для Linux необходимо использовать исходную установку (в Ubuntu Centos и другие дистрибутивы также можно установить напрямую с помощью команд, но, как правило, последнюю версию Go установить нельзя).

Прежде чем писать код, вам нужно понять две важные концепции Go: GOROOT и GOPATH. GOROOT легко понять, это каталог установки Go, который в Java можно понимать как JAVA_HOME.

GOPATH обычно будет~/goКаталог, в этом каталоге обычно есть три подкаталога: bin, pkg, src. Каталог bin предназначен для исполняемых команд, каталог pkg — для некоторых файлов промежуточного программного обеспечения, созданных во время компиляции, а src — это место, где хранится исходный код.

До появления Go Modules (описанных ниже) зависимые библиотеки Go и исходный код нужно поместить в src GOPATH, иначе зависимости не будут найдены. После появления Go Modules проблема управления зависимостями Go в основном была решена, поэтому нет необходимости помещать исходный код в GOPATH, который в основном используется только для хранения зависимостей.

Базовая грамматика

На официальном сайте Go есть вводное руководство.A Tour of Go, который в основном охватывает весь синтаксис Go. прямо встраница в ИнтернетеВы также можете скачать это приложение локально:

go get golang.org/x/tour

Затем вы можете ввести его в командной строке (необходимо настроить GOPATH):

tour

Таким образом, можно открыть локальную веб-страницу, и скорость загрузки будет намного выше, ведь официальный сайт Go находится за границей, и прямой доступ все еще немного медленный.

Есть также аналогичный учебникGo By Example, вы можете выбрать один из этих двух руководств для изучения.

После выполнения вышеуказанных упражнений можно приступать к чтению "Язык программирования Go". Эту книгу можно назвать лучшим вводным учебником по Go. Хотя в содержании есть определенное отставание, в целом ее все же стоит прочитать.

Общие командные инструменты

Команды Go (команды go cli) очень важны, и эти инструменты необходимы для всего жизненного цикла разработки Go.

Основное использование команды Go выглядит следующим образом:

go <command> [arguments]

На начальном этапе необходимо освоить следующие команды:

  • go run: скомпилировать и запустить программу Go

  • go build: компилировать и упаковывать программы Go

  • go get: установить зависимости

  • пройти тест: запустить тест

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

go help

После прочтения этого содержания вы должны быть относительно хорошо знакомы с основным синтаксисом и общими инструментами Go.Чтобы иметь возможность использовать разработку Go как можно скорее, вам следует изучить некоторые общие компоненты и фреймворки.

1.2 Общие рамки

Если вы разрабатываете приложение, оно будет включать в себя разработку базового веб-API и использование MySQL и Redis. Перейдите к представлению следующих языков, как быстро начать работу с этими фреймворками.

веб-фреймворк

В Go обычно используется множество веб-фреймворков, я рекомендуюgin, этот фреймворк прост в освоении, и производительность также очень высока.

go get -u github.com/gin-gonic/gin

Вы можете быстро создать службу API на основе http:

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

Фреймворк MySQL

В языке Go пакет database/sql определяет все интерфейсы для операций с базой данных, но не предоставляет конкретных реализаций. Поскольку существует много типов баз данных, эта, которая определяет только интерфейс, скрывает конкретную реализацию библиотеки базы данных, которую нам удобно заменять и обновлять.

Поэтому при подключении к БД нужно выбирать драйвер БД самостоятельно, и рекомендовать те драйвера, которые полностью реализуют БД/sql, что способствует последующему сопровождению и обновлению кода.

Возьмем в качестве примера базу данных MySQL. Наиболее часто используемые драйверы:go-sql-driver/mysql, этот драйвер полностью реализует интерфейс базы данных/sql.

Установка проста:

$ go get -u github.com/go-sql-driver/mysql

Затем вы можете использовать интерфейс базы данных/sql для работы с базой данных:

import (
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
)


db, err := sql.Open("mysql", "user:password@/dbname")
if err != nil {
	panic(err)
}

Написание кода с нативным интерфейсом MySQL будет генерировать много избыточного кода.Если вы хотите сделать код чище, необходим ORM-фреймворк, то вам нужно его изучитьgormРамка.

go get -u gorm.io/gorm

Фреймворк Redis

Чтобы использовать Redis в Go, вам нужно использоватьgo-redis/redisкомпоненты. Установка так же проста:

go get github.com/go-redis/redis/v8

Кроме этого компонента, есть ещеredigoЕсть много людей, которые используют его, вы можете изучить его самостоятельно.

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

2. Расширенный

После изучения вышеперечисленных основ вам необходимо изучить дополнительный контент.

Go Modules

Изучая вышеуказанную структуру, вы все равно можете писать код в GOPATH. Начиная с Go 1.11, Go представил модули Go в качестве официального инструмента управления зависимостями.

Этот инструмент надо изучать.Управление зависимостями всегда было недостатком языка Go.После множества неофициальных решений официальный выстрелил и запустил этот инструмент. Лучшими источниками для обучения являются статьи в блоге Go:blog.gowaves.org/using-go-mo…. Если английская версия покажется неудобной, вот мой переводВерсия.

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

Go Blog

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

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

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

Effective go

Помимо блога Go, официальный сайт Go также имеетEffective goЭтот документ обязателен к просмотру.

Этот документ можно рассматривать как руководство по поводу того, чтобы избежать подводных камней. Он указывает из-за ошибок областей языка Go и может помочь нам написать очиститель и более красиво структурированный код. Документ недолго и очень стоит прочитать.

3. Другие ресурсы

Github — это репозиторий, который нельзя игнорировать при изучении программирования в наши дни. В этих репозиториях Github ниже есть множество ресурсов для изучения.

  • avelino/awesome-go: Библиотека колес Go постепенно улучшается.этот складЯ собрал множество библиотек Go. Прежде чем строить колесо, не забудьте зайти сюда и поискать его.

  • Alikll/golang-developer-roadmap: Вот также копия руководства разработчика Go.Карта маршрута

  • talkgo/read: В этом репозитории многоУчебник по Го, есть на китайском, но информацию в ней надо проверять, часть устарела

  • go/wiki: для проекта gowiki, здесь много технических документов, и блог Даниэля, если вы хотите подробно изучить Go, можете начать здесь

4. Инструменты разработки

GoLand также является платным инструментом, созданным JetBrains. Если вы не хотите тратить на это деньги, вы можете использовать VsCode, на VsCode есть много плагинов, и его легко установить.

Если вы готовы бросить, вы можете попробовать Vim, с Vimvim-goВпечатления от плагина неплохие, то есть в процессе установки можно наступить на некоторые ямки.

Для выбора компьютера разработки я рекомендую Mac. Для разработки Mac по-прежнему очень подходит. Теперь стандартная машина разработки интернет-компаний является Mac. Если вы думаете, что цена на новый Mac дороже, вы можете выбрать подержанную руку или отремонтированная машина с официального сайта. Если вы не рассматриваете переносимость, вы можете выбрать Mac Mini, который очень экономически эффективен.

В недавно вышедшей версии Go1.16 Go начал поддерживать архитектуру ARM, так что даже Mac с чипом M1 можно использовать для разработки Go (но с этим следует быть осторожным, могут быть и другие ямки).

5. Резюме

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

В дальнейшем я буду продолжать обновлять эту статью и обновлять документацию этой серии.Если у вас есть какие-либо предложения, пожалуйста, дайте мне знать.

Текст / Райджун

Эта статья была впервые опубликована в моей публичной учетной записи WeChat [Rayjun].