網站首頁 編程語言 正文
背景:
在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
相關推薦
- 2022-09-17 C++詳解PIMPL指向實現的指針_C 語言
- 2022-04-15 golang數組和切片作為參數和返回值的實現_Golang
- 2023-10-17 css標簽畫圓形進度條
- 2022-06-27 精簡高效的C#網站優化經驗技巧總結_C#教程
- 2022-06-07 python數組的復制與列表中的pop_python
- 2022-05-05 sqlserver數據庫加密后無法使用MDF,LDF,log文件名稱被修改的數據恢復_MsSql
- 2023-01-01 c語言中實現數組幾個數求次大值_C 語言
- 2022-10-24 利用Pandas求兩個dataframe差集的過程詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支