Следующая программа не может быть скомпилирована с ошибкой «невозможно присвоить f1 (). ID».
package main
type Employee struct {
ID int
Name string
}
func main() {
f1().ID = 11 // causes "cannot assign to f1().ID" error
f2().ID = 22
}
func f1() Employee {
return Employee{1, "Dilbert 1"}
}
func f2() *Employee {
return &Employee{2, "Dilbert 2"}
}
Поскольку функция f1 () возвращает переменную Employee, почему присвоение ее члену не разрешено? То же самое произведение Возвращаемое значение f1 () присваивается переменной, а ее член присваивается значение следующим образом:
v := f1()
v.ID = 10 // This works