package main

import (
    "encoding/json"
    "fmt"
    "reflect"

    "github.com/bitly/go-simplejson"
)

func main() {
    s := `{"a":[1,2,3]}`
    j, _ := simplejson.NewJson([]byte(s))
    i := j.Get("a").Interface()
    fmt.Printf("初始化arr 值%v  类型%T", i, i)

    fmt.Printf("i的值是%v \n", i)
    fmt.Printf("i反射的类型是 %v \n", reflect.TypeOf(i))

    //通过断言,先转换成可以循环的[]interface{}
    for _, elem := range i.([]interface{}) {
        fmt.Printf("元素的值是%v,反射类型是%v, ", elem, reflect.TypeOf(elem))
        val, err := elem.(json.Number).Float64()
        if err != nil {
            panic(err)
        }
        fmt.Printf("转换为浮点数后,值%v 类型%T \n", val, val)
    }

}
/* 
初始化arr 值[1 2 3]  类型[]interface {}i的值是[1 2 3]
i反射的类型是 []interface {}
元素的值是1,反射类型是json.Number, 转换为浮点数后,值1 类型float64
元素的值是2,反射类型是json.Number, 转换为浮点数后,值2 类型float64
元素的值是3,反射类型是json.Number, 转换为浮点数后,值3 类型float64
 */

因为我这个数组是从json转回来的,所以是json.Number类型的元素.具体你的数据还要看情况进行转换的.
下边json.Number定义

// A Number represents a JSON number literal.
type Number string

// String returns the literal text of the number.
func (n Number) String() string { return string(n) }

// Float64 returns the number as a float64.
func (n Number) Float64() (float64, error) {
    return strconv.ParseFloat(string(n), 64)
}

// Int64 returns the number as an int64.
func (n Number) Int64() (int64, error) {
    return strconv.ParseInt(string(n), 10, 64)
}