Пожалуйста, сначала посмотрите на код ниже.
package main
import "fmt"
type InterfaceFunc func(interface{})
type StringFunc func(string)
func stringFunc(s string) {
fmt.Printf("%v", s)
}
func interfaceFunc(i interface{}) {
fmt.Printf("%v", i)
}
func main() {
var i = interfaceFunc
var s = stringFunc
i = s // I would like someone to explain why this can't be done exactly.
}
Запуск на https://play.golang.org/p/16cE4O3eb95
Почему InterfaceFunc
не может удерживать StringFunc
, а interface{}
может удерживать string
.