golang中函数签名

hhxx
  • 569

在看gopl的时候做一道题,遇到一个问题,
编写一个程序,默认打印标准输入的以SHA256哈希码,也可以通过命令行标准参数选择SHA384或SHA512哈希算法,
我想用一个数组来索引函数,就是类似这样

type hashFn ...
fnmap = []hasnFn{...}

然后通过解析参数,取得函数,但是我突然发现一个问题,我如何找到这种函数的原型呢?请指点一下.

PS我知道可以用switch或者if,只是想问一下这个问题。或则这样问,怎么把一些函数放在一个slice或者字典中,如果这些函数原型不同可以做到吗?因为我之前都是写js和python的,这两个实现这个需求完全没有问题。找到函数原型的办法找到了,但是希望大家指点一下如何将不同原型的参数放在一个切片或者字典
中,如:

func([]uint8) [32]uint8 
func([]uint8) [64]uint8

这两个函数可以放在一个可以索引的结构中吗?

回复
阅读 5.6k
1 个回答

要是想把func放到slice或者map中的时候,func的入参和返回个数类型必须一致。

如果想把参数不一致的func放到一个map中,参数就用interface{}来处理
var funcMap map[string]func(in ...interface{}){out ...interface{})
这样子就可以把各种方法放到同一个map中了
然后返回值在用switch out.(type)来处理

我也是python转go的。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏