如何在Golang中编写一个函数,它将多个类型作为参数?

时间:2016-04-23 07:59:21

标签: function go interface

我正在尝试在Golang中编写一个函数,它将序列化地图和切片(将其转换为字符串)。我希望它采用一个参数,但我不确定如何让它只接受一个地图和一个切片。我知道我可以使用类似下面的功能,但除此之外我很困惑。我仍然试图绕过界面。

func Serialize(data interface{}) string {
    return ""
}

如果我不需要为它创建自己的结构,这是首选。关于如何允许此Serialize函数接受地图和结构的解释将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

您可以简单地使用fmt.Sprintf

type foo struct {
    bar  string
    more int
}

func main() {
    s := []string{"a", "b", "c"}
    fmt.Println(Serialize(s))

    m := map[string]string{"a": "a", "b": "b"}
    fmt.Println(Serialize(m))

    t := foo{"x", 7}    
    fmt.Println(Serialize(t))
}

func Serialize(data interface{}) string {
    str := fmt.Sprintf("%v", data)
    return str
}

这将打印:

[a b c]

map[b:b a:a]

{x 7}

如果需要/ {}[]

,您可以轻松修剪map[]strings.TrimSuffixstrings.TrimPrefix