字节数组golang的大小

sr_*_*149 13 bytearray sizeof go

我有一个[]字节对象,我希望以字节为单位获取它的大小.在golang中是否有相当于C的sizeof()?如果没有,你能建议其他方法来获得相同的吗?

Cal*_*leb 14

要返回字节切片中的字节数,请使用以下len函数:

bs := make([]byte, 1000)
sz := len(bs)
// sz == 1000
Run Code Online (Sandbox Code Playgroud)

如果您的意思是使用基础数组中的字节数cap:

bs := make([]byte, 1000, 2000)
sz := cap(bs)
// sz == 2000
Run Code Online (Sandbox Code Playgroud)

保证一个字节是一个字节:https://golang.org/ref/spec#Size_and_alignment_guarantees.


eva*_*nal 9

我认为你最好的选择是;

package main

import "fmt"
import "encoding/binary"

func main() {
    thousandBytes := make([]byte, 1000)
    tenBytes := make([]byte, 10)
    fmt.Println(binary.Size(tenBytes))
    fmt.Println(binary.Size(thousandBytes))
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/HhJif66VwY

虽然有很多选择,比如导入不安全和使用sizeof;

import unsafe "unsafe"

size := unsafe.Sizeof(bytes)
Run Code Online (Sandbox Code Playgroud)

请注意,对于某些类型(如切片),Sizeof将为您提供切片描述符的大小,这可能不是您想要的.另外,请记住切片的长度和容量是不同的,binary.Size返回的值反映了长度.