Ответ
Go — это статически типизированный язык программирования с богатым набором встроенных типов, которые делятся на две основные категории:
Базовые (встроенные) типы
- Целочисленные знаковые:
int
,int8
,int16
,int32
(псевдонимrune
),int64
. - Целочисленные беззнаковые:
uint
,uint8
(псевдонимbyte
),uint16
,uint32
,uint64
,uintptr
. - Числа с плавающей точкой:
float32
,float64
. - Комплексные числа:
complex64
,complex128
. - Логический:
bool
(принимает значенияtrue
илиfalse
). - Строковый:
string
(неизменяемая последовательность байт в кодировке UTF-8).
Составные (композитные) типы
- Массив (Array):
[n]T
— коллекция элементов одного типа фиксированной длины. - Срез (Slice):
[]T
— динамический, гибкий вид на базовый массив. - Структура (Struct):
struct { ... }
— коллекция именованных полей, которые могут иметь разные типы. - Указатель (Pointer):
*T
— хранит адрес в памяти другой переменной. - Функция (Function):
func(...) ...
— функции являются типами первого класса, их можно присваивать переменным. - Интерфейс (Interface):
interface { ... }
— определяет набор методов. Любой тип, реализующий эти методы, неявно удовлетворяет интерфейсу. - Карта (Map):
map[K]V
— неупорядоченная коллекция пар ключ-значение. - Канал (Channel):
chan T
— механизм для безопасного обмена данными между горутинами.
Пример использования:
package main
import "fmt"
// Определяем структуру
type Person struct {
Name string
Age int
}
func main() {
// Базовые типы
var score int = 100
var message string = "Success"
// Составные типы
primes := [3]int{2, 3, 5} // Массив
names := []string{"Alice", "Bob"} // Срез
ages := make(map[string]int) // Карта
ages["Alice"] = 30
// Структура
p := Person{Name: "Charlie", Age: 25}
fmt.Printf("%s: %d, Primes: %v, Names: %v, Person: %+vn",
message, score, primes, names, p)
}