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.
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