而不是

iAreaId := int(val)
iAreaId := val.(int)
iAreaId, ok := val.(int) // Alt. non panicking version 

无法convert接口类型值的原因是引用的等级库部件中的以下规则:

T(x)Tx

...

在以下任何一种情况下,非恒定值x可以转换为T型:

  1. X可赋值给T.
  2. x的类型和T有相同的基础类型.
  3. X的类型和T是未命名的指针类型,它们的指针基类型具有相同的基础类型.
  4. X的类型和T都是整数或浮点类型.
  5. X的类型和T都是复杂类型.
  6. X是整数或字节或符号片,T是字符串类型.
  7. X是字符串,T是字节或符号片.

iAreaId := int(val)

任何一种情况都是not-7.