首页 > 解决方案 > 需要 uint64 编译以实现 32 位架构的 Golang 程序

问题描述

我目前正在开发一个程序,我需要存储大整数值,大到它们不适合uint32. 只有int64uint64

我刚刚意识到Raspberry Pi Zero v1.3,我将用于这个项目的,有Broadcom BCM2835 processor,我相信它是一个32 bit架构处理器。

It contains an ARM1176JZFS (ARM11 using an ARMv6-architecture core) with floating point, running at 1GHz

如何确保我的程序在这个 32 位架构上正常运行?我必须做一些不同的事情吗?或者当我交叉编译它时,编译器是否能够毫无问题地处理它:env GOOS=linux GOARCH=arm GOARM=6 go build

标签: goarm32bit-64bit

解决方案


首先,免责声明:我不写 32 位代码,所以我说的可能不完整。

根据语言规范,唯一依赖于体系结构的类型是 int、uint 和 uintptr。这意味着,您必须返回并检查声明为这些类型之一的每条数据和函数参数。您还必须检查任何作为 interface{} 传递的无类型数字文字(声明的常量和文字值),因为它们也将作为 int 传递。


推荐阅读