Структуры в Go - это коллекции полей определенных
типов. Как правило, они используются для логической
группировки данных.
|
|
|
|
|
|
Структура person имеет два поля name и age .
|
type person struct {
name string
age int
}
|
Функция NewPerson создает новую струкутуру person с
заданным именем.
|
func NewPerson(name string) *person {
|
Вы можете безопасно вернуть указатель на локальную
переменную, так как локальная переменная переживет
область действия функции.
|
p := person{name: name}
p.age = 42
return &p
}
|
|
|
Так создается новая структура
|
fmt.Println(person{"Bob", 20})
|
Вы можете задавать имена для корректного
присваивания значений при создании структуры
|
fmt.Println(person{name: "Alice", age: 30})
|
Пропущенные поля будут нулевыми.
|
fmt.Println(person{name: "Fred"})
|
Префикс & возвращает указатель на структуру.
|
fmt.Println(&person{name: "Ann", age: 40})
|
Можно инкапсулировать создание новой структуры
в функцию
|
fmt.Println(NewPerson("Jon"))
|
Доступ к полям структуры осуществляется через
точку.
|
s := person{name: "Sean", age: 50}
fmt.Println(s.name)
|
Вы также можете использовать точки со
структурными указателями - указатели автоматически
разыменовываются.
|
sp := &s
fmt.Println(sp.age)
|
Структуры мутабельны.
|
sp.age = 51
fmt.Println(sp.age)
}
|