json.Marshal当无法封送数据中的值时,该函数将失败。导致失败的唯一方法是引入一个用于测试的字段并在测试期间输入一个错误的值:type DocData struct { … Test interface{} `json:"test,omitempty"`}…var induceFailure interface{}…docData.Test = induceFailuretxBytes, err := json.Marshal(docData)if err != nil { return false, fmt.Errorf("failed docData bytes marshalling: %s", err.Error())}…func TestMarshlFail(t *testing.T) { induceFailure = make(chan struct{}) defer func() { induceFailure= nil }() …在该行代码上获得测试覆盖率可能不值得麻烦。与手头的问题无关,这里有一些对您的代码的改进。包装错误而不是将错误转换为字符串:return nil, fmt.Errorf("failed docData unmarshalling: %w", err)因为docData是指针,解组时不需要取值的地址。err := json.Unmarshal(txData, docData)
1 回答
手掌心
TA贡献1942条经验 获得超3个赞
问题中的代码不会修改磁盘上的文件。
图像解码后的当前位置imageFile在文件开头的某个位置。要再次读取文件,请返回文件的开头:
imageFile, err := os.Open("image.png")
if err != nil { log.Fatal(err) }
decodedImage, _, err := image.Decode(imageFile)
if err != nil { log.Fatal(err) }
// Rewind back to the start of the file.
_, err := imageFile.Seek(0, io.SeekStart)
if err != nil { log.Fatal(err) }
// Do something with imageFile here.
将log.Fatal错误处理替换为适合您的应用程序的任何内容。
- 1 回答
- 0 关注
- 74 浏览
添加回答
举报
0/150
提交
取消