golang int64转int的方法

 更新时间:2023年01月09日 15:30:44   作者:面向未来的历史  
这篇文章主要介绍了golang int64转int,本文给大家提供两种方法 ,将 golang int64 转换为golang int,结合实例代码给大家分享转换方法,需要的朋友可以参考下

背景:

在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

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

相关文章

  • Goland IDEA项目多开设置方式

    Goland IDEA项目多开设置方式

    这篇文章主要介绍了Goland IDEA项目多开设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Go实现简单的数据库表转结构体详解

    Go实现简单的数据库表转结构体详解

    这篇文章主要为大家介绍了Go实现简单的数据库表转结构体详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Go Singleflight导致死锁问题解决分析

    Go Singleflight导致死锁问题解决分析

    这篇文章主要为大家介绍了Go Singleflight导致死锁问题解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Golang的Fork/Join实现代码

    Golang的Fork/Join实现代码

    Fork/Join本质上是一种任务分解,将一个很大的任务分解成若干个小任务,然后再对小任务进一步分解,直到最小颗粒度,然后并发执行,对Golang的Fork/Join实现代码感兴趣的朋友跟随小编一起看看吧
    2023-01-01
  • Go gRPC进阶教程gRPC转换HTTP

    Go gRPC进阶教程gRPC转换HTTP

    这篇文章主要为大家介绍了Go gRPC进阶教程gRPC转换HTTP教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 一文详解go的defer和return的执行顺序

    一文详解go的defer和return的执行顺序

    go的defer和return是golang中的两个关键字,return用于返回函数的返回值,也可以参与一定的流程控制,defer是golang中的延迟调用,经常用于文件流的关闭,锁的解锁操作,本文给大家介绍了go的defer和return的执行顺序,需要的朋友可以参考下
    2024-07-07
  • go进行http请求偶发EOF问题分析

    go进行http请求偶发EOF问题分析

    go使用连接池进行http请求,一般都能请求成功,但偶然会出现请求失败返回EOF错误的情况,本文主要来带大家分析一下为什么会出现这样的问题并提供解决方法,需要的可以参考下
    2025-01-01
  • go语言计算两个时间的时间差方法

    go语言计算两个时间的时间差方法

    这篇文章主要介绍了go语言计算两个时间的时间差方法,涉及Python操作时间的技巧,需要的朋友可以参考下
    2015-03-03
  • Golang字符串类型原理及其使用方法

    Golang字符串类型原理及其使用方法

    本文主要介绍了Golang字符串类型原理及其使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • Golang Compare And Swap算法详细介绍

    Golang Compare And Swap算法详细介绍

    CAS算法是一种有名的无锁算法。无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步Non-blocking Synchronization
    2022-10-10

最新评论