如何向结构初始化中添加if语句

问题描述 投票:0回答:1

我正在尝试在嵌套结构中添加if语句,每当我尝试构建时,都会得到:syntax error: unexpected if, expecting expression

我发现了一个简单的代码,显示了我想做的事情:

package main

import "fmt"

type Salary struct {
    Basic, HRA, TA float64
}

type Employee struct {
    FirstName, LastName, Email string
    Age                        int
    MonthlySalary              []Salary
}

func main() {
    e := Employee{
        FirstName: "Mark",
        LastName:  "Jones",
        Email:     "[email protected]",
        Age:       25,
        MonthlySalary: []Salary{
            Salary{
                Basic: 15000.00,
                HRA:   5000.00,
                TA:    2000.00,
            },
            Salary{          //i want to add a condition "if true" then add this salary struct
                Basic: 16000.00,
                HRA:   5000.00,
                TA:    2100.00,
            },                // till here
            Salary{
                Basic: 17000.00,
                HRA:   5000.00,
                TA:    2200.00,
            },
        },
    }

而且我发现这可以通过预处理器来完成,对此我一无所知。

请注意,该结构是从原始代码中的另一个包导入的,我无法更改其声明和使用方式。

if-statement go struct preprocessor
1个回答
0
投票

您不能将逻辑内联到结构中。您必须在变量声明之外执行此操作。但这很容易。例如:

func main() {
    salaries := []Salary{
        {
            Basic: 15000.00,
            HRA:   5000.00,
            TA:    2000.00,
        },
    }
    if /* your condition */ {
        salaries = append(salaries, Salary{
            Basic: 16000.00,
            HRA:   5000.00,
            TA:    2100.00,
        })
    }
    salaries = append(salaries, Salary{
        Basic: 17000.00,
        HRA:   5000.00,
        TA:    2200.00,
    })
    e := Employee{
        FirstName: "Mark",
        LastName:  "Jones",
        Email:     "[email protected]",
        Age:       25,
        MonthlySalary: salaries,
    }
© www.soinside.com 2019 - 2024. All rights reserved.