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.
我认为你最好的选择是;
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返回的值反映了长度.