Сниппет для тех, кто только начинает работать с языком GO
Запускать программы можно через:
go run filename
ИЛИ
Если хочешь скомпилировать в исполняемый файл, используй:
go build hello_world.go
./hello_world
При переходе с Python на Go есть несколько ключевых моментов, которые стоит учитывать:
- Строгая типизация В отличие от Python, где переменные имеют динамическую типизацию, в Go все переменные имеют строгий тип. Например:
var x int = 10 // Явное объявление типа
y := 20 // Неявное объявление, но тип фиксируется (int)
-
Компиляция vs. Интерпретация Go — это компилируемый язык, поэтому код нужно компилировать перед запуском. Это даёт преимущество в скорости.
-
Явное управление ошибками В Go нет исключений, как в Python (try/except). Вместо этого функции часто возвращают ошибки, которые нужно обрабатывать:
package main
import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("деление на ноль")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Ошибка:", err)
} else {
fmt.Println("Результат:", result)
}
}
- Отсутствие классов и ООП
В Go нет классов и наследования, но есть структуры (struct) и интерфейсы. Например:
type Person struct {
Name string
Age int
}
func (p Person) Greet() {
fmt.Println("Привет, меня зовут", p.Name)
}
- Горутины и конкурентность Go поддерживает лёгкие потоки выполнения (горутины), что упрощает работу с многопоточностью:
go myFunction() // Запускает функцию в отдельной горутине
- Отсутствие while, только for В Go нет while, используется только for:
for i := 0; i < 5; i++ {
fmt.Println(i)
}
- Разница между := и = в Go
:= Объявляет новую переменную и присваивает ей значение (x := 10)
= Присваивает значение уже существующей переменной (x = 20)