1
인터페이스의 유형에 따라 기능을 선택하는이 관용구의 이름이 있습니까? 이 관용구의 이름이 있습니까?
type encoderFunc func(e *encodeState, v reflect.Value, opts encOpts)
var encoderCache struct {
m map[reflect.Type]encoderFunc
}
func (e *encodeState) marshal(v interface{}, opts encOpts) (err error) {
v := refect.ValueOf(v)
valueEncoder(v)(e, v, opts)
return nil
}
func valueEncoder(v reflect.Value) encoderFunc {
return encoderCache.m[v.Type()]
}
는
encoding/json에서 복사 약간 데모 변경.
나는 잘 모르겠지만, 이것은 일종의 상속 재산이라고 생각합니다. 함수가 인터페이스 대신 ABC의 일부인 경우 언어는 유형에 따라 올바른 메소드를 자동으로 선택합니다. – Carcigenicate
@Carcigenicate, 어떤 기능을 의미합니까? 나는 이것이 어떤 식 으로든 상속과 관련이 있다고 생각하지 않는다. 관련된 유형은 완전히 무관합니다. – Sridhar
Nvm, 코드를 잘못 읽은 것 같습니다. 상단의 설명과 코드에서부터 객체의 유형에 따라 함수를 파견하는 것처럼 보였습니다. – Carcigenicate