golang int64转int的方法

01-09 129阅读 0评论

?=背景:

在cGo中,需要将golang的整数类型传到cGO使用,但是不能直接传Golangint型,而应该是 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

到此这篇关于golang int64转int的文章就介绍到这了,更多相关golang int64转int内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,129人围观)

还没有评论,来说两句吧...