2016-09-20 29 views
1

我在尋找整數轉換功能類似於此:在Go中,如何從溢出的int轉換中得到錯誤?

func narrow(x int64) (int32, error) { ... } 

在這個例子中,如果沒有該函數將返回((int32)(x), nil)如果x適合的int32(nil, someError)

似乎有很多conversions內置到語言中,但他們都沉默吞下溢出,而不是提供一個具體的錯誤。我錯過了什麼嗎?

回答

5

轉換不報告溢出。

下面是處理正數和負數的函數:

func narrow(x int64) (int32, error) { 
    y := int32(x) 
    if int64(y) != x { 
     return 0, errors.New("overflow") 
    } 
    return y, nil 
} 

playground example

相關問題