我今天开始学习Go,所以这可能是一个愚蠢的问题。我已经习惯了PHP,因此我不需要声明变量类型。
我目前正将一些常用的PHP函数转换为Go函数。我有一个函数,它将一个数组转换为一个哈希表,以便以后快速查找(比遍历数组要快得多,看看值是否存在,而不是值成为键。)
在我看来,我必须创建两个单独的函数,一个用于字符串,一个用于整数(uint
,因为我不需要有符号整数)。为了维护起见,我希望有一个函数可以接受string
或uint
并返回相同的函数,即它可以工作并返回我最初传递给函数的任何函数。
目前我有这个:
// Array2Map_string makes a map out of an array of strings: word=>false
func Array2Map_string(a []string) map[string]bool {
mc := make(map[string]bool)
for _,tok := range a {
mc[tok]=false
}
return mc
}
// Array2Map_int makes a map out of an array of integers: int=>false
func Array2Map_int(a []uint) map[uint]bool {
mc := make(map[uint]bool)
for _,tok := range a {
mc[tok]=false
}
return mc
}
我想要的是,如果我向函数发送字符串数组,则创建并返回基于字符串的哈希表的单个函数,或者如果我向函数发送uint数组,则使用基于uint的哈希表。例如:
// Array2Map makes a map out of an array of strings whereby the key is
func Array2Map(a []whatever) map[whatever]bool {
mc := make(map[whatever]bool)
for _,tok := range a {
mc[tok]=false
}
return mc
}
这可能吗?