go – uint64是否需要8个字节的存储空间?

前端之家收集整理的这篇文章主要介绍了go – uint64是否需要8个字节的存储空间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
官方文档说uint64是一个64位的无符号整数,这是否意味着任何uint64数字应该占用8个字节的存储空间,无论它有多小或多大?

编辑:

谢谢大家的回答!

当我注意到binary.PutUvarint消耗多达10个字节来存储大的uint64时,我提出了疑问,尽管最大uint64应该只占用8个字节.

然后我在Golang lib的源代码中找到了我的疑问:

  1. Design note:
  2. // At most 10 bytes are needed for 64-bit values. The encoding could
  3. // be more dense: a full 64-bit value needs an extra byte just to hold bit 63.
  4. // Instead,the msb of the prevIoUs byte could be used to hold bit 63 since we
  5. // know there can't be more than 64 bits. This is a trivial improvement and
  6. // would reduce the maximum encoding length to 9 bytes. However,it breaks the
  7. // invariant that the msb is always the "continuation bit" and thus makes the
  8. // format incompatible with a varint encoding for larger numbers (say 128-bit).
根据 http://golang.org/ref/spec#Size_and_alignment_guarantees
  1. type size in bytes
  2.  
  3. byte,uint8,int8 1
  4. uint16,int16 2
  5. uint32,int32,float32 4
  6. uint64,int64,float64,complex64 8
  7. complex128 16

所以,是的,uint64总是占用8个字节.

猜你在找的Windows相关文章