25 Свои типы
Как описать свою структуру?
Ответ
struct собирает поля в один тип. Литерал User{ID: 1, Name: "Аня"} задаёт поля по имени. Тег в обратных кавычках — это метаданные для других пакетов. encoding/json читает тег 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)
}