Почему у нас есть методы, объявленные вне определения типа структуры?Например:
type antenna struct {
name string
length float32
girth float32
bloodtype string
}
func (p *antenna) extend() {
p.length += 10
}
Мне кажется, что метод может быть частью структуры?(Давайте пока проигнорируем, что структуры должны быть типами значений)
type antenna struct {
name string
length float32
girth float32
bloodtype string
func extend() {
length += 10
}
}
Это будет больше похоже на традиционную ООП.Я не нашел хороших объяснений того, почему это делается так, как это, кроме того, что "структуры являются типами значений, а классы являются ссылочными типами".Я знаю разницу, но это не удовлетворительный ответ для меня.В любом случае метод должен вызываться так:
var x = antenna()
x.extend()
Так какой смысл разделять структуру и методы?Их визуальное группирование в коде - как в типичных языках ООП - мне кажется полезным?