Какие бывают типы в Go ?

Спросят с вероятностью 17%



В Go существует несколько основных типов, которые можно разделить на следующие категории: базовые типы, агрегированные типы, ссылочные типы и интерфейсы. Рассмотрим каждую категорию более подробно.



Базовые типы



1️⃣Числовые типы

Целые числа:

int (размер зависит от платформы):int8, int16, int32, int64 ; uint (беззнаковый, размер зависит от платформы) ; uint8 (также известен как byte), uint16, uint32, uint64

Числа с плавающей запятой:float32, float64

Комплексные числа:complex64, complex128



2️⃣Булевый тип

bool (значения true и false)



3️⃣Символьные типы

byte (аналог uint8)

rune (аналог int32, используется для представления символов Unicode)



4️⃣Строки

string (последовательность байт, используемая для хранения текста)



Агрегированные типы



1️⃣Массивы

Фиксированный размер: [n]T (например, [5]int для массива из пяти целых чисел)



2️⃣Срезы

Переменный размер: []T (например, []int для среза целых чисел)



3️⃣Структуры

Набор полей: struct (например, type Person struct { Name string; Age int })



Ссылочные типы



1️⃣Указатели

Хранит адрес переменной: *T (например, *int для указателя на целое число)



2️⃣Карты (map)

Хранит пары ключ-значение: map[K]V (например, map[string]int для карты, где ключи - строки, а значения - целые числа)



3️⃣Функции

Определяет тип функции: func(параметры) возвращаемые_типы (например, func(int) int для функции, принимающей целое число и возвращающей целое число)



4️⃣Интерфейсы

Определяет методы, которые должны быть реализованы: interface{} (например, type Stringer interface { String() string })



Рассмотрим небольшой пример, демонстрирующий использование различных типов:

package main



import "fmt"



// Определение структуры

type Person struct {

Name string

Age int

}



// Функция, использующая интерфейс

func (p Person) String() string {

return fmt.Sprintf("%s (%d years old)", p.Name, p.Age)

}



func main() {

// Пример использования базовых типов

var age int = 30

var name string = "Alice"

var isStudent bool = false



// Пример использования агрегированных типов

var scores [3]int = [3]int{90, 85, 88}

var people []Person = []Person{

{Name: "Bob", Age: 25},

{Name: "Charlie", Age: 35},

}



// Пример использования ссылочных типов

var p *Person = &Person{Name: "Dave", Age: 40}

var ageMap map[string]int = map[string]int{"Alice": 30, "Bob": 25}



// Вывод данных

fmt.Println("Name:", name)

fmt.Println("Age:", age)

fmt.Println("Is student:", isStudent)

fmt.Println("Scores:", scores)

fmt.Println("People:", people)

fmt.Println("Pointer to Person:", p)

fmt.Println("Age map:", ageMap)

}




В Go есть базовые типы (числа, строки, булевы значения), агрегированные типы (массивы, срезы, структуры), ссылочные типы (указатели, карты, функции) и интерфейсы. Эти типы помогают структурировать и управлять данными в программе.



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 349 вопроса на Golang разработчика. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых