У меня есть следующий:Golang Метод Override
type Base struct {
}
func(base *Base) Get() string {
return "base"
}
func(base *Base) GetName() string {
return base.Get()
}
Я хочу, чтобы определить новый тип с новой реализацией Get(), так что я могу использовать новый тип вместо Base
и где GetName() называется его вызовом новой реализации Get(). Если бы я использовал Java, я бы наследовал Base и переопределял Get(). Как я должен достичь этого в Go? Я хочу, если это возможно, не нарушать какие-либо изменения, поэтому существующие потребители базы не нуждаются в изменении.
Мой первый удар в это похоже ..
type Sub struct {
Base
}
func(sub *Sub) Get() string {
return "Sub"
}
..which не работает. Мой мозг не связан с Go, но ясно.
Возможный дубликат [ возможно ли вызывать переопределенный метод из родительской структуры в golang?] (http: // stacko verflow.com/questions/21251242/is-it-possible-to-call-overridden-method-from-parent-struct-in-golang) – Vadyus
Go не имеет наследования и не имеет дженериков. Если что-то ожидает тип 'Base', вы не можете предоставить его другим типом. – JimB