使用golang时 - > encoding / gob,我想确定下一个变量的类型。 这样做的一种方法是在枚举和未知变量之间交替,用枚举告诉我下一个变量是什么。
但是,gob-stream已经知道下一个变量的类型。 (或至少它的名字,这对我来说已经足够了。) 从这个例子中可以看出:
package main
import (
"bytes"
"encoding/gob"
"fmt"
"log"
)
type Vector struct {
X, Y, Z int
}
func main() {
var network bytes.Buffer // Stand-in for the network.
// Create an encoder and send a value.
enc := gob.NewEncoder(&network)
err := enc.Encode(Vector{3, 4, 5})
if err != nil {
log.Fatal("encode:", err)
}
// Create a decoder and receive a value.
dec := gob.NewDecoder(&network)
var v interface{}
err = dec.Decode(&v)
if err != nil {
// This will run, outputting:
// local interface type *interface {} can only be decoded from remote interface type; received concrete type Vector = struct { X int; Y int; Z int; }
log.Fatal("decode:", err)
}
fmt.Println(v)
}
它看到,接下来它必须是一个带有名称向量的结构,并且会引发错误。 有没有办法在前面查询下一个类型。 (再一次,没有我明确发送它,实际上会产生不必要的开销)