English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник по Golang

Управляющие инструкции в Golang

Функции и методы в Golang

Структуры в Golang

Срезы и массивы в Golang

Строки (String) в Golang

Указатели в Golang

Интерфейсы в Golang

Конкурентоспособность в Golang

异常(Error) в Golang

Другие статьи по Golang

Структуры и указатели в Go

Вы также можете использовать указатель наstructуказатель. В Golang структура (структура) является пользователем определяемым типом, который позволяет группировать/комбинировать возможные проекты в один тип. Чтобы использовать указатель на структуру, можно использовать&Оператор, то есть оператор адресации. Golang позволяет программистам использовать указатели для доступа к полям структуры без явного дизассемблирования.

Пример 1:Здесь мы создали структуру под названием Employee, которая имеет два переменных. В функции main создается экземпляр структуры, то есть emp, затем вы можете передать адрес структуры указателю, представляющему концепцию структуры. Нет необходимости явно использовать дизассемблирование, так как это даст такой же результат (два ABC).

package main
import "fmt"
//Определение структуры
type Employee struct {
    //Установка поля
    name string
    empid int
}
func main() {
    //Созданная копия
    //Тип структуры сотрудника
    emp := Employee{"ABC", 19078}
    //Здесь, это указатель на структуру
    pts := &emp
    fmt.Println(pts)
    //Доступ к полю структуры (имя сотрудника)
    //Использование указателя, но здесь мы не используем явное дизассемблирование
    fmt.Println(pts.name)
    //Через явное использование дизассемблирования
    //Результат будет таким же, как и выше
    fmt.Println((*pts).name)
}

Вывод:

&{ABC 19078}
ABC
ABC

Пример 2:Вы также можете использовать указатели, например, чтобы изменить значение членов структуры или литерала структуры:

package main
import "fmt"
//Определение структуры
type Employee struct {
    name string
    empid int
}
func main() {
    //Созданная копия
    //Тип структуры Employee
    emp := Employee{"ABC", 19078}
    //Здесь, это указатель на структуру
    pts := &emp
    //Отображение значения
    fmt.Println(pts)
    //Обновление значения name
    pts.name = "XYZ"
    fmt.Println(pts)
}

Вывод:

&{ABC 19078}
&{XYZ 19078}