"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como faço para acessar campos incorporados em estruturas Go?

Como faço para acessar campos incorporados em estruturas Go?

Publicado em 2024-11-14
Navegar:666

How Do I Access Embedded Fields in Go Structs?

Acessando campos incorporados de tipo de estrutura

Em Go, os tipos de estrutura podem conter campos incorporados, o que permite incorporar um ou mais tipos em uma estrutura. Esse poderoso recurso permite a reutilização de código e o gerenciamento eficiente de memória. No entanto, entender como acessar esses campos pode ser um desafio ao aprender sobre ponteiros.

Considere as seguintes definições de estrutura:

type Engine struct {
    power int
}

type Tires struct {
    number int
}

type Cars struct {
    *Engine // Embedded field with pointer
    Tires   // Embedded field without pointer
}

Como você observou, dentro da estrutura Cars, um ponteiro de tipo incorporado *Engine é definido. Isso permite o acesso aos métodos e campos do tipo Engine por meio da estrutura Cars.

Para acessar o campo de potência do campo incorporado Engine, você deve primeiro inicializar as estruturas Engine e Cars. Na função principal:

func main() {
    car := new(Cars) // Initialize Cars struct
    car.Engine = new(Engine) // Initialize Engine struct explicitly
    car.power = 342 // Set power field
    car.number = 4 // Set number field
}

Ao inicializar explicitamente ambas as estruturas, você estabelece uma conexão entre o ponteiro *Engine incorporado e o objeto Engine real. Agora, você pode acessar o campo de potência através da estrutura Cars:

fmt.Println(car.power) // Prints 342

Da mesma forma, para o campo incorporado sem ponteiro Tires , você pode acessar diretamente seu campo numérico:

fmt.Println(car.number) // Prints 4

Este exemplo demonstra como inicializar e acessar corretamente campos incorporados dentro de uma estrutura , permitindo que você utilize totalmente a reutilização de código e o gerenciamento eficiente de memória.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3