我是新手 - 只是玩它 - 但我已经编写了一个命令行工具 - 我调用了大约30个不同的函数return x, err
。在每种情况下 - 如果出现错误,我想要做的只是恐慌 - 基本上一切都很完美,或者整件事都失败了。
我知道有template.Must( t Template*, err Error) Template*
- 而且我知道我可以制作check(something interface{}, err Error) interface{}
- 但要使用它我必须做一个类型演员,这是令人讨厌的。
是否有可能制作一种通用函数panicIfError
,以便我可以做类似的事情
x := panicIfError( ioutil.ReadFile( fileName ))
并且x出现了正确的类型?
(我看到很多人把if放在同一条线上 - 在我看来,牺牲了太多的可读性 - 目前我唯一的解决方案是为我使用的每一种类型重载panicIfError
,这不太理想)
答案 0 :(得分:0)
您可以做的最好的事情是声明它返回interface{}
类型的值,但这不是您正在寻找的内容(您需要type assertion从中获取其他类型的值。)
您希望panicIfError()
函数返回不同的具体类型。在Go中这是不可能的。