Structures / Constructors

type citizen struct {
    Name    string
    Country string
}

func newCitizen(param ...stringcitizen {
    switch len(param) {
        case 0:
            return citizen{"unknown""unknown"}
        case 1:
            return citizen{param[0], "unknown"}
        default:
            return citizen{param[0], param[1]}
    }
}

var man1 = newCitizen()
//man1.Name is "unknown"
fmt.Println("man1.Name =", man1.Name)
//man1.Country is "unknown"
fmt.Println("man1.Country =", man1.Country)

var man2 = newCitizen("Vladimir")
//man2.Name is "Vladimir"
fmt.Println("man2.Name =", man2.Name)
//man2.Country is "unknown"
fmt.Println("man2.Country =", man2.Country)

var man3 = newCitizen("Vladimir""Brazil")
//man3.Name is "Vladimir"
fmt.Println("man3.Name =", man3.Name)
//man3.Country is "Brazil"
fmt.Println("man3.Country =", man3.Country)