golang int64轉int的方法
背景:
在cgo中,需要將golang的整數(shù)類型傳到cgo中使用,但是不能直接傳golang的int類型,而應該是 int32, 數(shù)值的內存長度才能與 c中int 長度一致。 但是有時 golang中獲取到的整型是int64, 但是不能直接使用 int32 強制轉換。
以下將提供兩種方法 ,將 golang int64 轉換為golang int 。(golang int64轉int32方法類似)。
轉換方法
1 字符串中轉
即將golang int64 先轉換wei golang string, 然后將 string 轉換為 int
// main.go package main import ( "strconv" "fmt" "reflect" ) func main () { var id64 int64 = 99 // method 1: strInt64 := strconv.FormatInt(id64, 10) id16 ,_ := strconv.Atoi(strInt64) fmt.Println(id16) fmt.Println(reflect.TypeOf(id16))
2 指針類型轉換
即獲取golang int64 地址,將其轉為int類型,之后讀取該內存單元的地址時,會將變量的值解釋為 int類型。
// main.go package main import ( "unsafe" "fmt" "reflect" ) func main () { var id64 int64 = 99 // method 2: idPointer := (*int)(unsafe.Pointer(&id64)) idd16 := *idPointer fmt.Println(idd16) fmt.Println(reflect.TypeOf(idd16)) }
說明
第2 種方法較第一種方法不安全
同時要注意int64范圍, id64數(shù)值不能超過最大值或者低于最小值,值范圍可參考,https://studygolang.com/articles/6566
到此這篇關于golang int64轉int的文章就介紹到這了,更多相關golang int64轉int內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
go語言通過odbc操作Access數(shù)據(jù)庫的方法
這篇文章主要介紹了go語言通過odbc操作Access數(shù)據(jù)庫的方法,實例分析了Go語言通過odbc連接、查詢與關閉access數(shù)據(jù)庫的技巧,需要的朋友可以參考下2015-03-03GoLang中panic與recover函數(shù)以及defer語句超詳細講解
這篇文章主要介紹了GoLang的panic、recover函數(shù),以及defer語句,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-01-01go語言實現(xiàn)字符串與其它類型轉換(strconv包)
strconv包是Go語言標準庫的一部分,主要提供字符串與基本數(shù)據(jù)類型之間的轉換功能,使用strconv包可以方便地在不同類型之間進行轉換,滿足日常編程中的需求,感興趣的可以了解一下2024-10-10