考虑以下简单的 go 程序
package main
import (
"io"
"encoding/json"
"os"
)
type MyEncoder interface {
Encode(v interface{}) error
}
type MyEncoderCreator func(io.Writer) *MyEncoder
type MyContainer struct {
Creator MyEncoderCreator
}
func main() {
container := Container{
Creator:json.NewEncoder,
}
encoder := container.Creator(os.Stdout)
encoder.Encode(map[string]string{"key":"value"})
}
此程序无法编译并出现以下错误:
./main.go:21: cannot use json.NewEncoder (type func(io.Writer) *json.Encoder) as type MyEncoderCreator in field value
为什么是这样?该json.Encoder结构有一个满足MyEncoder接口的接收器。那么是否应该json.NewEncoder允许将该功能分配给MyContainer.Creator?
忽然笑
相关分类