为了更好地理解types转换,请看下面的代码:
package main import "fmt" func foo(a interface{}) { fmt.Println(a.(int)) // conversion of interface into int } func main() { var a int = 10 foo(a) }
此代码完美执行并将接口types转换为inttypes
对于接口types和typesT的expression式x,主expression式x。(T)声明x不是零,并且存储在x中的值是Ttypes。记号x。(T)被称为types断言。 更准确地说,如果T不是接口types,x(T)断言x的dynamictypes与Ttypes相同。在这种情况下,T必须实现x的(接口)types; 否则types断言是无效的,因为x不能存储typesT的值。如果T是接口types,则x(T)断言x的dynamictypes实现了接口T.
回到你的代码,这个
iAreaId := val.(int)
应该运作良好。 如果你想检查转换时发生的错误,你也可以重新写上面的行
iAreaId, ok := val.(int)