如果Golang中有相同的对象,则初始化嵌套的struct定义

I have struct like this:

type AutoGenerated struct {
 Accounting []struct {
    FirstName string `json:"firstName"`
    LastName string `json:"lastName"`
    Age int `json:"age"`
} `json:"accounting"`
Sales []struct {
    FirstName string `json:"firstName"`
    LastName string `json:"lastName"`
    Age int `json:"age"`
} `json:"sales"`

}

I want to assign values to it like this:-

data := AutoGenerated{}
data.Accounting.LastName = "Apple2"
data.Accounting.FirstName = "Apple1"
data.Accounting.Age = 20
data.Sales.LastName = "Ball2"
data.Sales.FirstName = "Ball1"
data.Sales.Age = 30

But is is giving error which is data.Accounting.LastName undefined

Although same code is working fine for

type AutoGenerated struct {
    FirstName string `json:"firstName"`
    LastName string `json:"lastName"`
    Age int `json:"age"`
}

Where I assigned the values like this:-

data := AutoGenerated{}
data.LastName = "Apple2"
data.FirstName = "Apple1"
data.Age = 20

Please don't assign values manually I have to take values from other function.

Your inner structs are slices. Either use this:

type AutoGenerated struct {
 Accounting struct {
    FirstName string `json:"firstName"`
    LastName string `json:"lastName"`
    Age int `json:"age"`
} `json:"accounting"`
Sales struct {
    FirstName string `json:"firstName"`
    LastName string `json:"lastName"`
    Age int `json:"age"`
} `json:"sales"`

Or if you need to have more than one Sale or Accounting per struct then you have to initialize the slices and refer to them by index.

In your object data of AutoGenerated type, data.Accounting is a slice of structs. Before you can use data.Accounting slice, you'll need to initialize it. An example usage would be:

type AutoGenerated struct {
 Accounting []Account `json:"accounting"`
 Sales []struct {
    FirstName string `json:"firstName"`
    LastName string `json:"lastName"`
    Age int `json:"age"`
 } `json:"sales"`
}

// defined separately for better readability
type Account struct {
    FirstName string `json:"firstName"`
    LastName string `json:"lastName"`
    Age int `json:"age"`
}

Then to assign values to the struct:

a := AutoGenerated{}
a.Accounting = make([]Account, 1) // create the slice of appropriate length
// append values to it
a.Accounting = append(a.Accounting, Account{"firstname", "lastname", 30})