interface{} 类型转换的问题

来源:2-2 内建变量类型

晓之海绵宝宝

2018-07-08

我希望定义一个 interface{} 类型的切片,然后希望拼接所有的元素

var result string
var arrs []interface{}
arrs = append(arrs, 1)
arrs = append(arrs, "ha")
for _, v := range arrs {
   result += v.(string)
}
fmt.Println(arrs)

然后就会报错 :

panic: interface conversion: interface {} is int, not string


写回答

2回答

ccmouse

2018-07-09

类型转换可以多收一个参数,result,ok:=v.(string)
或者可以使用type assertion,我会讲到。
我看了下其实你想不管啥类型都拼成string,那使用fmt.Sprintf(“%v”,v)就可以了

0
3
晓之海绵宝宝
回复
ccmouse
亲测有效 , 666
2018-07-18
共3条回复

废名0

2018-07-08

你添加int  1   又用了类型断言 string   肯定会报错啊。。

0
3
晓之海绵宝宝
回复
废名0
如果那么简单就不提问了... interface{} 不能通过 string 直接转换,编译都不能通过。
2018-07-09
共3条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程