json.Marshal當無法封送數(shù)據(jù)中的值時,該函數(shù)將失敗。導致失敗的唯一方法是引入一個用于測試的字段并在測試期間輸入一個錯誤的值: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 }() …在該行代碼上獲得測試覆蓋率可能不值得麻煩。與手頭的問題無關(guān),這里有一些對您的代碼的改進。包裝錯誤而不是將錯誤轉(zhuǎn)換為字符串:return nil, fmt.Errorf("failed docData unmarshalling: %w", err)因為docData是指針,解組時不需要取值的地址。err := json.Unmarshal(txData, docData)
1 回答

手掌心
TA貢獻1942條經(jīng)驗 獲得超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錯誤處理替換為適合您的應(yīng)用程序的任何內(nèi)容。
- 1 回答
- 0 關(guān)注
- 91 瀏覽
添加回答
舉報
0/150
提交
取消