我试图从 JSON获得一个值并将其转换为 int 但它不起作用,我不知道如何正确执行。 : V, X3 v1 z4 ^ w" a. Q这是错消息: ) g+ Q/ k. k" @0 I1 c
...cannot convert val (type interface {}) to type int: need type assertion. S& u, e( S7 b
和代码:: W1 E2 ~- A; u" D( Z5 J0 r F" S
r) [9 I, x. w: i6 p
var f interface{} err = json.Unmarshal([]byte(jsonStr),&f) if err != nil utility.CreateErrorResponse(w,"Error: failed to parse JSON data.") return } m := f.(map[string]interface val,ok := m["area_id"] if !ok utility.CreateErrorResponse(w,"Error: Area ID is missing from submitted data.") return } fmt.Fprintf(w,"Type = %v",val) // 代替[code]iAreaId := int(val)( f3 l. ]( V8 f2 Q% w
你想要一个类型的断言:9 _6 ] z& Q" B" q! h
iAreaId := val.(int)iAreaId,ok := val.(int) // Alt. non panicking version , ~: Z" c! n; W3 V8 L4 l j' A4 E6 L
接口类型值不能转换的原因是参考规范中的这些规则:8 K! T, L4 h& z6 A' ~
转换是一种形式T(x)where Tis a type and xis a expression that can convert to type T./ H( e$ w* K# [( Q/ ]
… ' W) F9 f! ]) S' `在以下任何情况下,非常值 x 可转换为类型 T:" z" ~2 A$ [ C% [2 D( ?7 a
[ol]x 可分配给 T。3 n+ p7 ~* \1 F3 m" @
x 的类型和 T 基础类型相同。3 ]% U3 @8 t) H5 ^
x 的类型和 T 是未命名的指针类型,其指针基类型具有相同的底层类型。* }# t1 _1 z0 B) P: k, e
x 的类型和 T 是整数或浮点类型。2 p5 a1 q" d v( ^; j) @: z
x 的类型和 T 都是复数类型。' u2 R. }5 h4 ~! r/ i+ a
x 是整数或字节片或符文,T 是字符串类型。 . V9 ], u$ L/ o' Tx 是字符串,T 是字节或符文切片。[/ol]但 $ B: O+ |* l0 ^0 M( Y9 K2 i8 [