【问题标题】:GoLang Level3 embedded struct initialisationGoLang Level3 嵌入式结构初始化
【发布时间】:2022-11-22 12:27:33
【问题描述】:

我是 Golang 开发的新手。我试图初始化一个具有 3 级嵌入式结构的结构。我可以创建直到 2 级,但是当我尝试使用 3 级时,它会给我这个编译时错误。

复合文字中缺少类型

这是试用代码 可用的。请帮助/建议一个很好的方法来实现同样的目标。

在 main.go 中,无法初始化 a2 变量。

package main

import (
    "structpackage"
    cfmt "basic/utils"
    "fmt"

)

type p StrPackage
type n NestedStruct

type Address struct {
    Name         string
    city         string
    Pincode      int
    StrPackage   p // embedded struct
    NestedStruct n // nested struct embedded in Address struct
}

func main() {

    
    // Declaring and initializing a struct using a struct literal
    a1 := Address{Name: "Akshay", city: "Dehradun", Pincode: 3623572, StrPackage: p{14, "Software engineer"}} // embedded struct implementation

    /** * embedded struct implementation Start  **/

    a2 := Address{Name: "Akshay", city: "Dehradun", Pincode: 3623572, NestedStruct: n{Designation: "Software engineer", S: {Age: 12, Occuption: "sfdsf"}}} // Naming fields while initializing a struct

    fmt.Println("Address2: ", a2)
}

结构包.go

package structpackage

type StrPackage struct {
    Age       int
    Occuption string
}

type NestedStruct struct {
    Designation string
    S           StrPackage
}

【问题讨论】:

    标签: go golangci-lint


    【解决方案1】:

    请注意,Strpackage 类型的对象需要即时分配给 NestedStruct.S

    a2 := Address{
             Name: "Akshay", 
             city: "Dehradun", 
             Pincode: 3623572, 
             NestedStruct: n{
                Designation: "Software engineer", 
                S: structpackage.StrPackage{
                      Age: 12, Occuption: 
                      "sfdsf"
                }
             }
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多