Я пытаюсь понять, как интерфейсы работают в Go.Понимание интерфейсов в Go
Скажем, у меня есть 2:
Структурыpackage "Shape"
type Square struct {
edgesCount int
}
type Triangle struct {
edgesCount int
}
Теперь я создаю Shape
интерфейс:
type Shape interface {
}
Почему я не могу указать, что интерфейс Shape
имеет egdesCount
свойство? Используются ли интерфейсы только для перегруппировки методов?
Еще одна проблема, с которой я сталкиваюсь, - это функция совместного использования. Не представляется возможным, чтобы придумать что-то вроде этого:
func New() *Shape {
s:=new(Shape)
s.edgesCount = 0
return s
}
Это было бы гораздо лучше, чем переписывать один и тот же код:
func New() *Square {
s:=new(Square)
s.edgesCount = 0
return s
}
func New() *Triangle {
s:=new(Triangle)
s.edgesCount = 0
return s
}
(который также представляет проблему, как я не могу переобъявить мой New
функция ...)
Большое спасибо за вашу помощь
Обратите внимание, что Go также позволяет лаконична альтернативные 'SquareEdges типа int', для объявления типов, которые имеют один основной значение данных. Все остальное здесь обсуждалось и яблоки для этих красных типов. –