Этот вопрос проверяет знание основных типов данных в Go, которые необходимы для работы с числами, текстом, логикой и структурами. Понимание типов данных — основа для работы с языком.
Go поддерживает широкий спектр типов данных, включая числовые (целые и с плавающей запятой), строковые, булевы, массивы, срезы, структуры, карты, указатели, интерфейсы и каналы. Это позволяет эффективно решать разнообразные задачи, используя строгую типизацию.
В Go реализована строгая типизация, что означает, что каждому значению должен быть присвоен конкретный тип. Основные группы типов данных:
Базовые типы:
Логический (Boolean): bool принимает только значения true или false.
Числовые:
Целые: int, int8, int16, int32, int64, а также беззнаковые: uint, uint8, uint16, uint32, uint64.
С плавающей запятой: float32, float64.
Комплексные: complex64, complex128.
Строки (String): последовательности символов UTF-8.
Составные типы:
Массивы (Arrays): фиксированная длина, например, [3]int.
Срезы (Slices): динамическая последовательность, например, []int.
Карты (Maps): хранилище пар ключ-значение, например, map[string]int.
Структуры (Structs): пользовательские типы данных, объединяющие набор полей.
Особые типы:
Указатели (Pointers): указывают на адрес памяти.
Интерфейсы (Interfaces): определяют набор методов.
Каналы (Channels): используются для передачи данных между горутинами.
Пример кода, демонстрирующего работу с различными типами данных:
package main
import "fmt"
func main() {
// Базовые типы
var b bool = true
var i int = 42
var f float64 = 3.14
var s string = "Hello, Go!"
fmt.Println(b, i, f, s) // true 42 3.14 Hello, Go!
// Составные типы
arr := [3]int{1, 2, 3}
slice := []string{"a", "b", "c"}
m := map[string]int{"one": 1, "two": 2}
fmt.Println(arr, slice, m) // [1 2 3] [a b c] map[one:1 two:2]
}Go строго следит за совместимостью типов, что помогает предотвратить ошибки.