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 } и попробуй ещё раз
Обсуждают сегодня