getName() string
getAddress() string
}
type Person struct{
name string
address string
}
func (p Person) getName() string {
return p.name
}
func (p Person) getAddress() string {
return p.address
}
func main() {
var ivan1 TestInterface = &Person{"Ivan", "Moscow"}
var ivan2 TestInterface = Person{"Ivan", "Moscow"}
printTestInterface(ivan1)
printTestInterface(ivan2)
}
func printTestInterface(t TestInterface) {
fmt.Println(t.getAddress())
fmt.Printf("%T \n", t)
}
Почему в Go такое поведение? Т.е. TestInterface подразумевает и ссылку на объект, и объект. Хочется однозначно иметь *TestInterface - это ссылка, TestInterface - это сам объект. Есть где-то в доке описание этого?
не понятно что именно вас не устраивает. Такое повеедние очевидно потому, что оба типа Person и *Person удовлетворяют интерфейсу TestInterface
А теперь сделай func (p *Person) getAddress() string { return p.address } и попробуй ещё раз
Обсуждают сегодня