package main
import "fmt"
import "reflect"
type NameChanger interface {
ChangeName()
}
type man struct {
Name string
Name2 string
}
func (m man) ChangeName() { //Почему я не могу здесь написать func (m *man) ChangeName() ?
m.Name = string("New Name")
}
func main() {
a := man{Name: "Ivan", Name2: "Petrov"}
fmt.Printf("type=%v, value=%v\n", reflect.TypeOf(a), a) //type=main.man, value={Ivan Petrov}
a.ChangeName()
fmt.Printf("type=%v, value=%v\n", reflect.TypeOf(a), a.Name) //type=main.man, value=Ivan
var b NameChanger
b = man{Name: "Sergey", Name2: "Smirnov"}
fmt.Printf("type=%v, value=%v\n", reflect.TypeOf(b), b) //type=main.man, value={Sergey Smirnov}
b.ChangeName()
fmt.Printf("type=%v, value=%v\n", reflect.TypeOf(b), b.Name) //b.Name undefined (type NameChanger has no field or method Name)
}