Доступ к полям структуры
Доступ к полям структуры в Go осуществляется с помощью оператора точки ..
Мы можем как получать значение поля, так и изменять его.
Если структура определена в другом пакете, то доступны только экспортируемые поля
(с именами, начинающимися с заглавной буквы).
Синтаксис
instance.FieldName
Пример
Давайте определим структуру Person и обратимся к ее полям:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Alice", Age: 30}
fmt.Println(p.Name)
fmt.Println(p.Age)
}
Результат выполнения кода:
"Alice"
30
Пример
Давайте изменим значение поля структуры:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Bob", Age: 25}
p.Age = 26
fmt.Println(p.Age)
}
Результат выполнения кода:
26
Пример
Если структура является указателем, доступ к полям также осуществляется через точку (Go автоматически разыменовывает указатель):
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
p := &Person{Name: "Charlie", Age: 22}
fmt.Println(p.Name)
p.Age = 23
fmt.Println(p.Age)
}
Результат выполнения кода:
"Charlie"
23
Пример
Попытка доступа к неэкспортируемому полю из другого пакета приведет к ошибке компиляции.
В этом примере поле age неэкспортируемое:
package main
import "fmt"
type User struct {
Name string
age int // неэкспортируемое поле
}
func main() {
u := User{Name: "Dave", age: 40}
fmt.Println(u.Name)
// fmt.Println(u.age) // ошибка: нельзя обратиться к неэкспортируемому полю
}
Результат выполнения кода:
"Dave"
Смотрите также
-
статью
struct,
в которой описывается создание структур -
статью
Поля структур,
содержащую подробную информацию о полях -
статью
Экспортируемые поля,
в которой рассматриваются правила экспорта полей -
статью
Указатели на структуры,
в которой рассказывается о работе с указателями