Пример ошибки @ play.golang.org: http://play.golang.org/p/GRoqRHnTj6Ошибка при возвращении обратного вызова, который возвращает соответствующий тип интерфейса
Следующий код возвращает «prog.go: 16: не может использовать NewMyGame (тип FUNC() MyGame) как type func() Воспроизводимый в аргументе return ", хотя интерфейс полностью пуст. Пожалуйста, найдите также код, приведенный ниже, я полностью разочарован, и любая помощь будет чрезвычайно оценена.
package main
// Define an arbitrary game type
type MyGame struct{}
// Create a constructor function for arbitrary game type
func NewMyGame() MyGame {
return MyGame{}
}
// Define an interface defining game types
type Playable interface{}
// In my app it will return a list of constructors matching interface
func Playables() func() Playable {
return NewMyGame
}
func main() {}
Спасибо за ваш ответ, ответ имеет смысл, и на самом деле работает для меня в моем приложении , Вы не узнаете, почему требования к интерфейсу связи не будут возможны на уровне сигнатуры обратного вызова, но работает, когда вы завершаете вызов конструктора в другом обратном вызове? – beefsack
@beefsack Это потому, что типы в Go довольно конкретны. Найдите вокруг вопросов о срезах интерфейсов. Это также имеет значение, потому что интерфейсы в основном представляют собой 2-х указательный блок, который изменяет размер возвращаемого значения. – cthom06