是否可以在Golang中创建一个类型泛型(模板)函数

时间:2016-08-01 03:21:46

标签: go

我是新手 - 只是玩它 - 但我已经编写了一个命令行工具 - 我调用了大约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,这不太理想)

1 个答案:

答案 0 :(得分:0)

您可以做的最好的事情是声明它返回interface{}类型的值,但这不是您正在寻找的内容(您需要type assertion从中获取其他类型的值。)

您希望panicIfError()函数返回不同的具体类型。在Go中这是不可能的。

请参阅FAQ: Why does Go not have generic types?

中的相关主题