我正在掌握 Golang 的做事方式。我将非常感谢任何可能在以下方面提供帮助的人。首先是一些示例代码
package main
import (
"log"
"os"
)
func logIt(s string) {
f, _ := os.OpenFile("errors.log", os.O_RDWR|os.O_CREATE|os.O_APPEND,
0666)
defer f.Close()
log.SetOutput(f)
log.Println(s)
}
type iAm func(string)
func a(iam string) { logIt(iam + " A") }
func b(iam string) { logIt(iam + " B") }
func c(iam string) { logIt(iam + " C") }
var funcs = map[string]iAm{"A": a, "B": b, "C": c}
func main() {
funcs["A"]("Je suis")
funcs["B"]("Ich bin")
funcs["A"]("Yo soy")
funcs["D"]("Soy Yo")
}
说明
我正在将我所有的日志输出传送到一个文件中,以便我以后可以对其进行监控。这是正确的渠道方式吗?
我想根据用户输入确定在运行时调用的正确函数。为此,我将函数打包为 Golang 映射 - 在 PHP 中,我会使用关联数组。这有效。然而,这是一种有效的做事方式吗?
最后,您会注意到我的地图中实际上没有D键。最后一次 funcs 调用导致 Go 出现抖动。在另一种语言中,我会将这些调用包装在 try... 块中并避免该问题。从我所了解的围棋理念是检查密钥的有效性第一和恐慌,而不是试图盲目地使用该密钥。那是对的吗?
我是 Go 新手,所以我可能有我使用的其他语言的包袱。在我看来,以先发制人的方式处理异常情况(在使用之前检查密钥)既不聪明也不高效。对?
相关分类