我正在Go中编写一个应用程序,该应用程序使用编码/目标在节点之间通过UDP发送结构和 slice 。它工作正常,但我注意到encoding/json也具有类似的API。搜索并找到以下信息(https://golang.org/pkg/encoding/):



有人可以向我解释一种方法是否比另一种方法更有效,并且通常比较何时选择哪种方法?另外,如果我需要与非Go应用程序接口(interface),我猜json将是首选?

最佳答案

在Go程序之间进行通信时,Gob更可取。但是,go和C目前仅受gob支持,因此仅在确保没有任何其他编程语言编写的程序会尝试对值进行解码时才使用。

在性能方面,至少在我的机器上,Gob远胜过JSON。 Test file(在您的GOPATH下自动放入一个文件夹中)

$ go test -bench=.
testing: warning: no tests to run
BenchmarkGobEncoding-4           1000000              1172 ns/op
BenchmarkJSONEncoding-4           500000              2322 ns/op
BenchmarkGobDecoding-4           5000000               486 ns/op
BenchmarkJSONDecoding-4           500000              3228 ns/op
PASS
ok      testencoding    6.814s

07-27 13:34