首先,不需要隔离变量。其次,您可以在if语句中进行简写分配,例如:
entryJson, err := json.MarshalIndent(entry, "", " ")if err != nil{ log.Println(err)} else { log.Println(entryJson)}if err = ioutil.WriteFile("text.json", entryJson, 0644); err != nil{ log.Println(err)}// or if you want to limit the scope of err badly, this is also legal:if err := ioutil.WriteFile("text.json", entryJson, 0644); err != nil{ log.Println(err)}处理此特定示例的一种干净方法是将其放入自己的函数中并调用它:
func writeJSON(fn string, v interface{}) error { j, err := json.MarshalIndent(v, "", " ") if err != nil { return err } return ioutil.WriteFile(fn, j, 0644)}func main() { var test struct { A string B string } if err := writeJSON("file.json", test); err != nil { log.Fatal(err) }}


