日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

golang?int64轉int的方法_Golang

作者:面向未來的歷史 ? 更新時間: 2023-02-23 編程語言

背景:

在cgo中,需要將golang的整數類型傳到cgo中使用,但是不能直接傳golang的int類型,而應該是 int32, 數值的內存長度才能與 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數值不能超過最大值或者低于最小值,值范圍可參考,https://studygolang.com/articles/6566

原文鏈接:https://blog.csdn.net/a1368783069/article/details/84443381

欄目分類
最近更新