Não consigo descobrir como inicializar uma estrutura aninhada. Encontre um exemplo aqui: http://play.golang.org/p/NL6VXdHrjh
package main
type Configuration struct {
Val string
Proxy struct {
Address string
Port string
}
}
func main() {
c := &Configuration{
Val: "test",
Proxy: {
Address: "addr",
Port: "80",
},
}
}
Respostas:
Bem, há alguma razão específica para não tornar o Proxy sua própria estrutura?
De qualquer forma, você tem 2 opções:
Da maneira correta, basta mover o proxy para sua própria estrutura, por exemplo:
A maneira menos adequada e feia, mas ainda funciona:
fonte
Se você não quiser usar uma definição de struct separada para struct aninhada e não gostar do segundo método sugerido por @OneOfOne, você pode usar este terceiro método:
Você pode verificar aqui: https://play.golang.org/p/WoSYCxzCF2
fonte
c.Proxy.Address = `127.0.0.1`
c.Proxy.Port = `8080`
Existe uma maneira de inicializar esses valores durante a&Configuration{}
atribuição?Proxy
como sua própria estrutura, veja o primeiro método na resposta de @OneOfOneDefina sua
Proxy
estrutura separadamente, fora deConfiguration
, assim:Consulte http://play.golang.org/p/7PELCVsQIc
fonte
P Proxy
for uma matriz?Você também tem esta opção:
fonte
Proxy
for uma matriz?Uma pegadinha surge quando você deseja instanciar um tipo público definido em um pacote externo e esse tipo incorpora outros tipos que são privados.
Exemplo:
Como você instancia um
Duck
em seu próprio programa? Aqui está o melhor que pude pensar:fonte
cannot refer to unexported field or method
erro.Você também pode alocar usando
new
e inicializar todos os campos manualmenteVeja no playground: https://play.golang.org/p/sFH_-HawO_M
fonte
Você pode definir uma estrutura e criar seu objeto em outra estrutura, como fiz abaixo:
Espero que tenha ajudado :)
fonte
Você precisa redefinir a estrutura sem nome durante
&Configuration{}
https://play.golang.org/p/Fv5QYylFGAY
fonte