将不同类型重新分配给Go中的变量

时间:2018-01-20 23:13:36

标签: go

希望做这样的事情

curr := foo()["blah"].(string)
curr, err := strconv.ParseFloat(curr, 64)

ERROR: cannot assign float64 to curr (type string) in multiple assignment

我不想制作转换后我不会使用的另一个临时变量。我是Go的新手,所以有一种方法可以帮助我避免

temp := foo()["blah"].(string)
curr, err := strconv.ParseFloat(temp, 64)

1 个答案:

答案 0 :(得分:2)

你试图在这里强制进行鸭子打字,并且Go是静态类型的,所以这将是多毛的或不可能的。这证明有另一个变量:

if temp, ok := foo()["blah"].(string); ok {
        curr, err := strconv.ParseFloat(temp, 64)
        if err != nil {
                panic(err)
        }
}

去垃圾收集器很生病。为几行提供额外的变量temp并不是那么糟糕。另外,不要忘记保护类型断言。