Golang(初学者):避免重复的函数来处理字符串或整数

时间:2014-06-29 11:25:14

标签: go

我今天开始学习Go,所以这可能是一个愚蠢的问题。我已经习惯了PHP,因此我不需要声明变量类型。

我目前正将一些常用的PHP函数转换为Go函数。我有一个函数,它将一个数组转换为一个哈希表,以便以后快速查找(比遍历数组要快得多,看看值是否存在,而不是值成为键。)

在我看来,我必须创建两个单独的函数,一个用于字符串,一个用于整数(uint,因为我不需要有符号整数)。为了维护起见,我希望有一个函数可以接受stringuint并返回相同的函数,即它可以工作并返回我最初传递给函数的任何函数。

目前我有这个:

//  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
}

这可能吗?

1 个答案:

答案 0 :(得分:3)

Go中不存在泛型(虽然有很多关于它的discussion。现在,我认为你当前的方向是你唯一的选择。