Все вопросы

25 Свои типы

Как описать свою структуру?

struct собирает поля в один тип. Литерал User{ID: 1, Name: "Аня"} задаёт поля по имени. Тег в обратных кавычках — это метаданные для других пакетов. encoding/json читает тег json и берёт только экспортированные поля.

Нулевая структура заполнена нулевыми значениями полей. Сравнивать структуры через == можно, если все поля сравнимы: нет срезов, карт и функций.

Порядок полей влияет на размер из-за выравнивания, но для прикладного кода важнее порядок, в котором структуру читают.

Пример

Go

структура с json-тегами

package main

import "fmt"

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
    Bio  string `json:"bio,omitempty"`
}

func main() {
    u := User{ID: 1, Name: "Аня"}
    fmt.Println(u.ID, u.Name, u.Bio)
}