Как добавить оператор if в инициализацию структуры - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь добавить оператор 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:     "mark@gmail.com",
        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,
            },
        },
    }

И я обнаружил, что это может быть сделано через препроцессор, о котором я совершенно не понимаю.

Обратите внимание, что структура импортирована из другого пакета на моем оригинале код, и я не могу изменить способ его объявления и использования.

1 Ответ

0 голосов
/ 11 апреля 2020

Вы не можете поместить logi c в структуру. Вы должны сделать это вне объявления переменной. Но это легко. Например:

func main() {
    // Initialize a slice of `salaries` with the first
    // value you know you need.
    salaries := []Salary{
        {
            Basic: 15000.00,
            HRA:   5000.00,
            TA:    2000.00,
        },
    }
    if /* your condition */ {
        // conditionally add the second one
        salaries = append(salaries, Salary{
            Basic: 16000.00,
            HRA:   5000.00,
            TA:    2100.00,
        })
    }
    // And finally add the last one
    salaries = append(salaries, Salary{
        Basic: 17000.00,
        HRA:   5000.00,
        TA:    2200.00,
    })
    e := Employee{
        FirstName: "Mark",
        LastName:  "Jones",
        Email:     "mark@gmail.com",
        Age:       25,
        // And here include them in the variable declaration
        MonthlySalary: salaries,
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...