我想要去一个小项目,并试图写这些功能:我该如何编写一个可以使用多种类型的函数呢?
func fatal(reason string) {
println(reason)
os.Exit(1)
}
func fatal(err error) {
fatal(err.Error())
}
挖约了一下,发现this answer,其中引用the docs on overloading,我意识到,我试图做的是在旅途中违法后。
我想要的是一个简单的api,它允许我调用致命的字符串或错误来简化我的逻辑。我如何实现这一目标或类似的目标?
如果func fatal(reason string)
与func fatalErr(err error)
一起出现,会不会觉得不合适?我是否错过了该语言的另一个特点,可以让我做我想做的事情?
类型切换和类型断言。谢谢,这看起来正是我想要的谷歌。 :)。看起来很遗憾我们需要通过将其转换为空白界面来丢失类型信息。有什么方法可以创建一个字符串或错误的类型,并说我们的致命函数使用某种类型的东西? –
@ MikeH-R你可以声明一个接口,它既是字符串又是err实现的。你的用例有点奇怪。 'error'实际上是一个接口,它的唯一方法是'Error()',它返回你想要显示的字符串作为错误。这里有另一个想法......做一个只接受'error'的致命的单一定义,然后当你有一个字符串并将错误传递给它时,执行'errors.New(theString)'。如果您好奇,这里是错误包源代码; https://golang.org/src/errors/errors.go – evanmcdonnal
谢谢埃文,非常有帮助。 –