golang int64轉int的方法
背景:
在cgo中,需要將golang的整數(shù)類型傳到cgo中使用,但是不能直接傳golang的int類型,而應該是 int32, 數(shù)值的內(nèi)存長度才能與 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類型,之后讀取該內(nèi)存單元的地址時,會將變量的值解釋為 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內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go實現(xiàn)簡單的數(shù)據(jù)庫表轉結構體詳解
這篇文章主要為大家介紹了Go實現(xiàn)簡單的數(shù)據(jù)庫表轉結構體詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01

