Структура в параметре функции в Go
Параметр-указатель на структуру работает с тем же значением, которое передал вызывающий код. Запись в поле через такой параметр видна снаружи. Запишем функцию и выведем возраст после вызова:
package main
import "fmt"
type User struct {
Name string
Age int
}
func addYear(u *User) {
u.Age += 1
}
func main() {
u := User{Name: "ann", Age: 20}
addYear(&u)
fmt.Println(u.Age) // выведет 21
}
Исправьте код так, чтобы новый возраст был виден снаружи функции:
package main
import "fmt"
type Employee struct {
Name string
Age int
}
func bump(emp Employee) {
emp.Age += 1
}
func main() {
emp := Employee{Name: "ann", Age: 20}
bump(emp)
fmt.Println(emp.Age)
}
Исправьте код так, чтобы новое имя было видно снаружи функции:
package main
import "fmt"
type Employee struct {
Name string
Age int
}
func rename(emp Employee) {
emp.Name = "ben"
}
func main() {
emp := Employee{Name: "ann", Age: 20}
rename(emp)
fmt.Println(emp.Name)
}