Объявление структуры
Объявление структуры в Go выполняется с помощью ключевого слова struct.
Структура — это составной тип данных, который объединяет набор полей (переменных)
в единую логическую группу. При объявлении структуры мы определяем её имя
и перечень полей с указанием их типов. В дальнейшем структура может
использоваться для создания переменных этого типа, доступа к полям
и описания поведения через методы.
Синтаксис
type StructName struct {
Field1 Type1
Field2 Type2
// другие поля
}
Объявление структуры начинается с ключевого слова type,
затем указывается имя структуры (например, Person),
после чего следует ключевое слово struct и блок фигурных скобок,
внутри которых перечисляются поля. Каждое поле состоит из имени
и типа. Поля могут быть любого типа: встроенные (int, string, bool),
другие структуры, срезы, карты и т.д.
Пример
Давайте объявим структуру Person с полями Name и Age
и создадим её экземпляр:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
person := Person{
Name: "Alice",
Age: 30,
}
fmt.Println(person)
}
Результат выполнения кода:
{Alice 30}
Пример
Объявим структуру Book с полями разных типов
и создадим её экземпляр с помощью литерала:
package main
import "fmt"
type Book struct {
Title string
Pages int
InStock bool
}
func main() {
book := Book{
Title: "The Go Programming Language",
Pages: 400,
InStock: true,
}
fmt.Printf("Title: %s, Pages: %d, In stock: %t\n", book.Title, book.Pages, book.InStock)
}
Результат выполнения кода:
"Title: The Go Programming Language, Pages: 400, In stock: true"
Пример
Структура может содержать поля, которые сами являются структурами.
Объявим структуру Address и вложим её в структуру Employee:
package main
import "fmt"
type Address struct {
City string
Street string
ZipCode int
}
type Employee struct {
Name string
Age int
Address Address
}
func main() {
emp := Employee{
Name: "Bob",
Age: 35,
Address: Address{
City: "New York",
Street: "Broadway",
ZipCode: 10001,
},
}
fmt.Printf("Employee: %s, lives in %s\n", emp.Name, emp.Address.City)
}
Результат выполнения кода:
"Employee: Bob, lives in New York"
Смотрите также
-
статью
Поля структур,
в которой подробно описаны правила именования и использования полей -
статью
Экспортируемые поля,
которая объясняет, как сделать поля доступными из других пакетов -
статью
Доступ к полям,
которая показывает, как читать и изменять значения полей структуры -
статью
Анонимные поля,
которая описывает встраивание полей без имени