我正在尝试在Golang中编写一个函数,它将序列化地图和切片(将其转换为字符串)。我希望它采用一个参数,但我不确定如何让它只接受一个地图和一个切片。我知道我可以使用类似下面的功能,但除此之外我很困惑。我仍然试图绕过界面。
func Serialize(data interface{}) string {
return ""
}
如果我不需要为它创建自己的结构,这是首选。关于如何允许此Serialize函数接受地图和结构的解释将非常受欢迎。
答案 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.TrimSuffix
和strings.TrimPrefix