2016-08-25 3 views
2

を私は*gin.Contextから受信interface{}型の値を持つ変換しますエラー:エラーは、インターフェース{} intに行く-ジン

このインターフェイスの値はです。このエラーが発生するのはなぜですか?私はこの値をSQLクエリで使用しています。 SQL文が失敗すると、これをfloat64に変換することはできません。これをどのようにしてintに変換できますか?

+0

http://stackoverflow.com/questions/8022389/convert-a-float64-to-an-int-in-go?rq=1 – kingSlayer

答えて

2

interface{}値に格納されている動的値は、タイプintとは異なるタイプのfloat64であることがわかります。

(あなたがやったとしてtype assertionを使用して)タイプfloat64の値を抽出し、簡単なtype conversionを使用して変換を行います。

f := c.MustGet("account").(float64) 
i := int(f) 
// i is of type int, you may use it so 

または1行で:

i := int(c.MustGet("account").(float64)) 

種類を確認するには値:

fmt.Printf("%T %v\n", i, i) 

両方の場合の出力それGo Playground上):

int 1 
関連する問題