Лучшие инструменты Go
В этой статье мы рассмотрим некоторые из наиболее полезных инструментов, которые обеспечивают лучший опыт разработки при кодировании на Go. Go предоставляет нам несколько замечательных инструментов, а также пакет, который мы можем использовать для написания собственных инструментов Go, соответствующих нашим потребностям.
Предпосылки
Чтобы следовать этому руководству, вам понадобятся:
- Go установлен (версия 1.14 или выше)
- Модули Go включены
- Текстовый редактор по вашему выбору
- Базовые знания Go
Понимание команды Go
Чтобы начать работу с инструментами Go, мы должны сначала узнать о команде go
, которая используется при выполнении инструмента Go. При установке любого дистрибутива Go у вас будет доступ к ключевому слову go
.
По словам Роба Пайка, одного из создателей Go, «цель новой команды go
- возвращение к идеалу, когда программы Go должны компилироваться без настройки или дополнительных усилий со стороны разработчика, помимо написания необходимых операторов импорта».
При работе с инструментами Go синтаксис команды выполнения обычно представляет собой имя инструмента, добавленного к команде go
, например go fix
. Чтобы увидеть список всех известных инструментов, просто запустите команду go tools
в своем терминале.
Улучшенный рабочий процесс с инструментами Go
В этом разделе мы рассмотрим различные инструменты Go, которые могут улучшить наш рабочий процесс разработки:
1. go vet
Ошибки - синтаксические, семантические или логические - неизбежно возникают при написании кода на любом языке программирования. Инструмент go vet проверяет код Go на наличие синтаксических ошибок и сообщает о них. Этот инструмент особенно удобен, когда вы работаете в команде.
Когда команда go vet
запускается, она проверяет наличие ошибок в коде по пути, по которому она была вызвана. Также go vet
можно вызвать таким образом go vet home/src/google-clone
, здесь он будет проверять указанный путь на наличие ошибок.
Одна из самых мощных функций инструмента go vet заключается в том, что он предоставляет список проверок, которые мы можем указать. Когда указана проверка, инструмент Vet будет сообщать только о тех случаях, когда наш код не подчиняется правилу указанной проверки.
Например, если мы запустим команду go vet -tests=true
, инструмент Vet проверит наличие ошибок в тестовых файлах этого каталога. Чтобы увидеть полный список всех проверок, которые можно указать, выполните команду go tool vet help
.
2. gofmt
Инструмент gofmt является одним из наиболее популярных инструментов в экосистеме Go. Его функция - форматировать исходный код Go. Инструмент gofmt
предпочитает табуляции пробелам и заменяет любой экземпляр отступа в вашей базе кода табуляциями. Есть несколько флагов, которые вы можете указать для дальнейшего расширения функциональности инструмента gofmt
:
package main
import "fmt"
func main() {
s := []string{"foo", "bear", "bar", "bare"}
v := s[1:len(s)]
for x, _ := range v {
fmt.Println(x)
}
}
Приведенный выше фрагмент кода охватывает срез и распечатывает индекс каждого элемента в этом срезе. Если мы хотим его отформатировать, мы просто запускаем эту команду: gofmt -w -s .
Команда включает флаг w
, который сообщает инструменту gofmt
перезаписать форматирование по умолчанию нашего файла и не распечатывать сделанные различия. Указанный нами флаг s
заставляет gofmt
проверять определенную двусмысленность в нашем коде и упрощает его.
Когда мы запустим указанную выше команду, наш код будет отредактирован, как показано ниже.
func main() {
s := []string{"foo", "bear", "bar", "bare"}
v := s[1:]
for x := range v {
fmt.Println(x)
}
}
Выражение среза и диапазона было упрощено. Удивительно, правда? Инструмент gofmt
должен быть другом каждого разработчика Go.
3. GoDoc
Беглый взгляд на исходный код вашего любимого пакета Go покажет, насколько серьезно к документации относятся в экосистеме Go. GoDoc используется для создания документации для исходного кода Go на основе комментариев, написанных в коде. Эта сгенерированная документация может затем отображаться как в формате HTML, определяемом с помощью тега -html
, или в виде обычного текста.
package main
import "fmt"
//Copyright 2020
//This is a sample documentation for a code snippet.
/*
This is the main function, it contains a slice,
and ranges over the slice.
*/
func main() {
s := []string{"foo", "bear", "bar", "bare"}
v := s[1:]
for x := range v {
fmt.Println(x)
}
}
Приведенный выше фрагмент - это прокомментированная версия примера диапазона, описанного выше. Если мы запустим godoc -http=:6060
и зайдем в браузер localhost:6060
, мы увидим такую HTML-страницу, которая показывает нам нашу документацию вместе с нашим кодом.
GoDoc также предоставляет нам возможность просматривать документацию любого пакета, доступного в стандартной библиотеке Go, локально и без подключения к Интернету. Чтобы просмотреть документацию по пакету, просто добавьте имя пакета и выполните команду godoc
.
4. go get
Инструмент Get, как следует из названия, используется для получения и установки сторонних пакетов или зависимостей в проекты Go. Команда go get
принимает URL-адрес устанавливаемого пакета.
Разработчики могут создавать сторонние инструменты Go с открытым исходным кодом. Мы также можем установить эти сторонние инструменты с помощью команды go get
, передав URL-адрес пакета, например go get github.com/kisielk/errcheckgithub.com/kisielk/errcheck
. Инструмент go get на сегодняшний день является наиболее важным и часто используемым инструментом Go.
Вывод
Все эти инструменты Go можно использовать в сочетании с хуками Git, чтобы автоматически запускать их до того, как они будут зафиксированы в системе контроля версий.
В этой статье мы рассказали, как использовать различные инструменты Go для улучшения нашего рабочего процесса разработки и общего опыта при написании кода.