在Go 中將interface{} 轉換為int
您的Go 程式碼嘗試直接將interface{} 值轉換為int,但是由於類型限制,轉換失敗。錯誤訊息表明此轉換需要類型斷言。
讓我們了解問題及其解決方案:
問題:
在提供的程式碼中,變數 val 的類型為 interface{}。這意味著它可以保存任何類型的值。賦值 iAreaId := int(val) 嘗試將 interface{} 值轉換為 int。然而,Go 中不允許這種直接轉換。
解:
為了正確地將 interface{} 值轉換為特定類型,需要類型斷言。類型斷言向編譯器提供明確的指示,表明您要將值轉換為特定類型。
要將val 斷言為int,請使用下列語法之一:
容易出現恐慌:
iAreaId := val.(int)
容易出現恐慌:
容易出現恐慌:
iAreaId, ok := val.(int)
如果val 不能轉換為int,這種方法會panic。 非panicing:這種方法將iAreaId分配給轉換後的值,ok為指示轉換是否成功的布爾值。如果轉換失敗,ok將為false。 理解轉換規則:從interface{}到特定類型的直接轉換是根據 Go 語言規範不允許。需要類型斷言來覆寫這些規則並將值明確轉換為所需的類型。
以上是如何在 Go 中安全地將 interface{} 轉換為 int?的詳細內容。更多資訊請關注PHP中文網其他相關文章!