gob: 인코딩 map[string]인터페이스{}
이 문서에서는 gob을 사용하여 발생하는 일반적인 문제를 살펴보겠습니다. map[string]interface{} 데이터 유형을 인코딩합니다. 이러한 맵을 인코딩하려고 하면 "gob: 인터페이스: map[string]interface {}에 대해 유형이 등록되지 않았습니다."라는 오류가 발생할 수 있습니다.
이 문제를 해결하기 위해 다음과 같은 간단한 솔루션을 소개합니다.
gob.Register(map[string]interface{}{})
gob에 map[string]interface{} 유형을 등록하면 인코더가 인코딩 중에 이 데이터 구조를 인식하고 적절하게 처리할 수 있습니다. process.
다음은 유형을 등록한 후 gob를 사용하여 map[string]interface{} 유형을 인코딩 및 디코딩하는 방법을 보여주는 업데이트된 코드 샘플입니다.
package main import ( "bytes" "encoding/gob" "encoding/json" "fmt" "log" ) func CloneObject(a, b interface{}) []byte { buff := new(bytes.Buffer) enc := gob.NewEncoder(buff) dec := gob.NewDecoder(buff) enc.Encode(a) b1 := buff.Bytes() dec.Decode(b) return b1 } func main() { var a interface{} a = map[string]interface{}{"X": 1} b2, err := json.Marshal(&a) fmt.Println(string(b2), err) gob.Register(map[string]interface{}{}) var b interface{} b1 := CloneObject(&a, &b) fmt.Println(string(b1)) }
gob 유형 등록 사용 , map[string]interface{} 값의 인코딩 및 디코딩이 원활하게 작동하고 "gob: 인터페이스에 등록되지 않은 유형: map[string]interface {}" 오류 메시지가 표시되지 않습니다. 더 오래 나타납니다.
위 내용은 Gob으로 `map[string]interface{}`를 인코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!