Экспортируемые поля структуры
Экспортируемые поля структуры в Go - это поля, имена которых начинаются с заглавной буквы. Такие поля доступны для чтения и записи из других пакетов, в отличие от неэкспортируемых полей, которые начинаются со строчной буквы и видны только внутри своего пакета. Экспортируемые поля являются важной частью API пакета и позволяют другим пакетам взаимодействовать с данными структуры.
Синтаксис
type StructName struct {
ExportedField type
unexportedField type
}
Пример
Давайте создадим структуру с экспортируемым полем в одном пакете и используем ее в другом:
// package person
package person
type User struct {
Name string // экспортируемое поле
Age int // экспортируемое поле
}
// package main
package main
import (
"fmt"
"person"
)
func main() {
user := person.User{
Name: "John",
Age: 30,
}
fmt.Println(user.Name)
fmt.Println(user.Age)
}
Результат выполнения кода:
"John"
"30"
Пример
Попробуем обратиться к неэкспортируемому полю из другого пакета:
// package person
package person
type User struct {
Name string
age int // неэкспортируемое поле
}
// package main
package main
import (
"fmt"
"person"
)
func main() {
user := person.User{
Name: "John",
age: 30, // ошибка: нельзя обратиться к неэкспортируемому полю
}
fmt.Println(user.age) // ошибка компиляции
}
Пример
Рассмотрим изменение экспортируемого поля через метод:
package main
import "fmt"
type User struct {
Name string
Age int
}
func (u *User) SetAge(age int) {
u.Age = age
}
func main() {
user := User{
Name: "Alice",
Age: 25,
}
fmt.Println(user.Age)
user.SetAge(26)
fmt.Println(user.Age)
}
Результат выполнения кода:
"25"
"26"
Смотрите также
-
объявление структуры
struct,
которое определяет новый тип данных -
поля структуры
fields,
которые хранят данные внутри структуры -
теги структуры
tags,
которые добавляют метаданные к полям -
доступ к полям
field-access,
который позволяет читать и изменять значения полей