2016-08-25 96 views
2

我從*gin.Context收到interface{}類型值:錯誤轉換接口{}爲int去,杜松子酒

c.MustGet("account") 

當我嘗試轉換到這個int使用:

c.MustGet("account").(int) 

我得到一個錯誤:

interface conversion: interface is float64, not int 

此接口的值是1。爲什麼我收到此錯誤?我在sql查詢中使用這個值。由於sql語句失敗,我無法將其轉換爲float64。我怎樣才能將它轉換成int

+0

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

回答

2

錯誤是不言自明的:存儲在interface{}值中的動態值類型爲float64,它與int類型不同。 (使用type assertion像你一樣)

提取float64類型的值,並且使用簡單的type conversion做轉換:

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

或者在同一行:

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

要驗證的類型和值:

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

在這兩種情況下輸出(嘗試它的Go Playground):

int 1 
相關問題