Conversión de estructura en Go
Considere las siguientes dos estructuras:
type A struct { a int b string } type B struct { A c string }
Supongamos que tiene una variable de tipo A y desea convertirla al tipo B. ¿Es esto posible en Go, o necesita copiar campos manualmente o crear un método de conversión explícito?
]Método 1: Asignación de estructuras incrustadas
Como mencionó en su pregunta, la incrustación se puede utilizar para este propósito. Al incrustar A en B, puede convertir una variable de tipo A al tipo B simplemente asignándola al campo incrustado. Por ejemplo:
func main() { structA := A{a: 42, b: "foo"} structB := B{A: structA} // Embed structA into structB }
Este enfoque crea una nueva instancia de B que contiene los datos de A en su campo incrustado.
Método 2: Copia manual de campos
Alternativamente, puede copiar manualmente los campos de A a B de la siguiente manera:
func main() { structA := A{a: 42, b: "foo"} structB := B{ A: structA, // Copy fields from structA c: "bar", } }
Este método implica crear una nueva instancia de B y asignar manualmente los campos de A.
Método 3: Método de conversión explícita
Otra opción es crear un método de conversión explícito que convierta A en B. Esto podría ser útil si tiene una lógica de conversión compleja. Sin embargo, este enfoque no es necesario en este caso, ya que los métodos anteriores proporcionan una forma sencilla de lograr la conversión deseada.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3