我试图从 JSON获得一个值并将其转换为 int 但它不起作用,我不知道如何正确执行。 ) b( J& c! d5 j! w0 [这是错消息:- P/ a, @4 d* Y: \, w
...cannot convert val (type interface {}) to type int: need type assertion ; `3 T7 O+ x% x" u+ s& W6 D
和代码:/ b/ M8 e, W; k# U1 T( f$ q
: {% U$ e3 b" E* K1 J: [( i w
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) $ ]4 |5 O( K& M Z7 w, a
你想要一个类型的断言:# v: `* E5 A; u3 h5 v( p
iAreaId := val.(int)iAreaId,ok := val.(int) // Alt. non panicking version 2 ? C* S, r% z2 ?) @7 ]
接口类型值不能转换的原因是参考规范中的这些规则:4 S: G' V1 R4 z+ U2 ~% b1 W
转换是一种形式T(x)where Tis a type and xis a expression that can convert to type T. ) c- z9 }* D# N; Y- P… ( ?" ], l5 J) K- b p. }( u J( o6 I7 k在以下任何情况下,非常值 x 可转换为类型 T: f2 M& ]+ Q5 ]1 j[ol]x 可分配给 T。9 E M2 C F7 r" z
x 的类型和 T 基础类型相同。: q# ^6 C* W5 i$ d& V
x 的类型和 T 是未命名的指针类型,其指针基类型具有相同的底层类型。 / S e4 H, b$ Zx 的类型和 T 是整数或浮点类型。 : ^8 y R' c8 D% |, `* O% ^x 的类型和 T 都是复数类型。 , D/ n8 g* B! g% v2 }- Y8 gx 是整数或字节片或符文,T 是字符串类型。 . g8 a) f# z, b* i/ z, |' X& F3 `x 是字符串,T 是字节或符文切片。[/ol]但 7 H0 r: p' l d3 Y