5 интересных и полезных советов в Go

Неважно, как долго вы программируете на любимом языке, вы все равно будете находить новые маленькие детали, которые вас будут приятно удивлять. В статье предлагаю 5 небольших советов в языке Go, которые я недавно узнал и о существовании которых не подозревал.

Заставьте компилятор подсчитывать элементы массива

В Go вы нечасто используете массивы. Вместо них вы используете срезы (слайсы, slices), но если вам надоело писать количество элементов в массиве самостоятельно, вы можете использовать […], и компилятор посчитает их за вас:

package main

import "fmt"

func main() {
    arr := [3]int{1, 2, 3}
    sameArr := [...]int{1, 2, 3} // Use ... instead of 3

    // Arrays are equivalent
    fmt.Println(arr)
    fmt.Println(sameArr)
}

Используйте go run . вместо go run main.go

Всякий раз, когда я начинаю создавать прототипы в Go, мне нравится начинать с файла main.go:

package main

import "fmt"

func main() {
    sayHello()
}

func sayHello() {
    fmt.Println("Hello!")
}

Но когда файл main.go становится большим, мне нравится разбивать мои структуры на отдельные файлы, используя один и тот же основной пакет. Однако если у меня есть следующие файлы…

main.go

package main

func main() {
    sayHello()
}

say_hello.go

package main

import "fmt"

func sayHello() {
    fmt.Println("Hello!")
}

Набрав go run main.go, вы получите следующую ошибку:

# command-line-arguments
./main.go:4:2: undefined: sayHello

Чтобы решить эту проблему, воспользуйтесь командой go run ..

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

Знаете ли вы, что с помощью подчеркивания можно сделать длинные числа более удобочитаемыми?

package main

import "fmt"

func main() {
    number := 10000000
    better := 10_000_000

    fmt.Println(number == better)
}

В одном пакете можно иметь разные тестовые пакеты

В Go я думал, что в одной папке может быть только 1 пакет. Это не совсем так. Для пакета под названием yourpackage в том же каталоге может быть еще один пакет под названием yourpackage_test, в котором вы можете написать свои тесты.

Зачем вам это нужно? Вы можете написать свои тесты, используя тот же пакет yourpackage, но при этом будут доступны и неэкспортированные функции. Написав тесты в yourpackage_test, вы убедитесь, что тестируете только открытое поведение.

Передача одного и того же аргумента несколько раз

При использовании функций форматирования строк меня всегда раздражало, что приходится повторять аргумент, который используется несколько раз:

package main

import "fmt"

func main() {
    name := "Bob"
    fmt.Printf("My name is %s. Yes, you heard that right: %s\n", name, name)
}

Очевидно, есть более удобный способ. Вы можете передать его только один раз и использовать его порядок в %s с помощью %[order]s:

package main

import "fmt"

func main() {
    name := "Bob"
    fmt.Printf("My name is %[1]s. Yes, you heard that right: %[1]s\n", name)
}

Совет найден в Твиттере Джона Эриксона:

Надеюсь, сегодня вы узнали что-то новое. Если вам понравился перевод или у вас есть вопрос, пожалуйста, свяжитесь со мной, например, в Linkedin, чтобы оставаться на связи.

Оригинал статьи
Опубликовано 2 сентября 2024 в 16:45
Обновлено 2 сентября 2024 в 18:50
Категория: Блог
Теги: