golang中int占用多少个字节

如果是32位CPU就是4个字节,如果是64位就是8个字节,由CPU的位数决定,然后按照公式1字节 = 8位计算。

fmt.Println(runtime.GOARCH)  //CPU型号
fmt.Println(strconv.IntSize) //int位数
### Golang 中 `len()` 函数计算字节长度 在 Go 编程语言中,`len()` 是一个内置函数,用于返回不同类型的数据结构的长度或大小。对于字符串而言,`len()` 返回的是该字符串所占用字节数量而非字符数量[^1]。 #### 字符串中的字节与字符区别 Go 的字符串是以 UTF-8 编码存储的,这意味着单个字符可能由多个字节组成。因此,在计算字符串长度时,`len()` 实际上是在统计这些字节的数量而不是 Unicode 字符的数量。例如: ```go s := "你好" fmt.Println(len(s)) // 输出 6 ``` 上述例子中,“你好”两个汉字各占三个字节,所以总字节数为 6 而不是 2。 如果需要获取字符串的实际字符数(即 rune 数),可以使用如下方式转换并计数: ```go runeSlice := []rune(s) fmt.Println(len(runeSlice)) // 正确输出字符数目 2 ``` 这里通过将字符串转成 `[]rune` 类型来实现对每个独立字符的精确计量。 #### 切片(slice) 和数组(array) 长度对比 除了作用于字符串外,`len()` 同样适用于切片和数组。它会给出当前序列元素的有效范围内的项目总数。需要注意的是,尽管切片可以从原数组派生而出,并拥有自己的长度与容量概念,但其长度始终不会超出原始数据源设定的最大界限。 例如下面这段代码展示了如何操作以及测量一个基于固定尺寸底层数组创建出来的动态可扩展区域——slice: ```go a := [...]int{1, 2, 3, 4, 5} s := a[2:4] fmt.Println(len(s), cap(s)) // 结果分别是 2 和 3 表明有效部分只有两位成员但是还能再容纳一位新加入者而不需重新分配内存空间。 ``` 以上实例说明即使我们截取了一个较短的新片段出来作为工作对象,原有的连续区块依旧保留着额外的空间供后续增长利用直到达到上限为止。 ### 总结 综上所述,当应用到字符串类型参数上的时候,Golang 的标准库函数 `len()` 主要用来测定目标值内部实际包含了多少个八位二进制单位(bit组合而成byte),这通常适合那些关心底层物理储存布局的应用场景;而对于更高级别的逻辑需求比如想要知道确切有多少可视化的文字单元存在,则应该考虑采用其他手段如前述提到过的先映射至 runes 序列后再求解的办法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值