3 回答
TA贡献1862条经验 获得超7个赞
没有任何一种,现在真的没有办法做到这一点
使您
[]int
和[]float
双方都进入[]interface{}
。使printItems接受
interface{}
而不是[]interface{}
使用反射,然后使用反射,类似于fmt包所做的事情。
两种解决方案都不是很漂亮。
TA贡献1802条经验 获得超6个赞
使用反射的示例:
package main
import (
"fmt"
"reflect"
"strings"
"container/vector"
)
func printItems(header string, items interface{}, fmtString string) {
value, ok := reflect.NewValue(items).(reflect.ArrayOrSliceValue)
if !ok {
panic("Not an array or slice")
}
stringBuilder := new(vector.StringVector)
stringBuilder.Push(header)
n := value.Len()
for i := 0; i < n; i++ {
stringBuilder.Push(fmt.Sprintf(fmtString, value.Elem(i).Interface()))
}
fmt.Println(strings.Join(*stringBuilder, ""))
}
func main() {
var iarr = []int{1, 2, 3}
var farr = []float{1.0, 2.0, 3.0}
printItems("Integer array:", iarr, " %d,")
printItems("Float array:", farr, " %.1f,")
}
- 3 回答
- 0 关注
- 211 浏览
添加回答
举报