我已经在使用megacheck
工具,发现在encoding/json
的测试中输入NullTestStrings
是未使用的。它似乎旨在检查将空值解码为",string"
字段的过程,但没有测试,这是第一个问题。第二个问题是,如果你创建一个,它会失败:https://play.golang.org/p/5XjdhoDDkq。
在我看来,将null
解码为简单字段和将"null"
解码为",string"
字段之间存在一些不一致之处。
形式:
$ go version
go version devel +ca360c3 Sat Oct 7 22:12:36 2017 +0000 linux/amd64
$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/ainar/go"
GORACE=""
GOROOT="/home/ainar/go/gotip"
GOTOOLDIR="/home/ainar/go/gotip/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build220310604=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
2条答案
按热度按时间rxztt3cl1#
感谢这个 -似乎我们应该要么移除那个结构体,要么为当前的行为添加测试?
jpfvwuh42#
我可以发送一个CL,添加测试或删除结构,但我认为
null
具有简单字段和"null"
具有",string"
字段的行为不同是相当令人担忧的。我认为行为应该是相同的。这迟早会咬到某人。如果你担心它会破坏某人的代码,我认为这是有风险的:Bugs。如果编译器或库有一个违反规范的错误,依赖于错误行为的程序可能会在修复错误时中断。我们保留修复此类错误的权利。