I have the following code:
if entryJson, err := json.MarshalIndent(entry, "", " "); err != nil{
log.Println(err)
} else {
log.Println(entryJson)
}
if err := ioutil.WriteFile("text.json", entryJson, 0644); err != nil {
log.Println(err)
}
I want to limit the scope of err as much as possible. The problem I'm facing with this is, that the variable entryJson
is out of scope when I want to write it to the file.
What is the idiomatic way to deal with this. Should I just reuse the variable err and check for it in an additional if block? Like this:
entryJson, err := json.MarshalIndent(entry, "", " ")
if err != nil{
log.Println(err)
} else {
log.Println(entryJson)
}
err = ioutil.WriteFile("text.json", entryJson, 0644)
if err != nil{
log.Println(err)
}
This works but looks less readable to me.
First, there's no need to isolate variables. Second, you can do short-hand assignment inside if statements, for example:
A clean way to handle this specific example though is to put it in it is own function and call it:
You can write file in the
else
statement following the error checking, although I can't say it's idiomatic/readable.