编写好的 Golang 代码

我正在掌握 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 新手,所以我可能有我使用的其他语言的包袱。在我看来,以先发制人的方式处理异常情况(在使用之前检查密钥)既不聪明也不高效。对?


海绵宝宝撒
浏览 185回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go