fst*_*tab 1 arrays types memory-management allocation go
我试图声明一个具有未指定大小的类型数组的变量,[]byte然后用分配的大小数组填充它,256如下所示:
var buf []byte
buf = new([256]byte)
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不起作用.返回的编译错误如下:
cannot use *new([256]byte) (type [256]byte) as type []byte in assignment
Run Code Online (Sandbox Code Playgroud)
任何的想法?
您想要将一个数组分配给切片,这将无法工作(请参阅" 切片:使用和内部 ")
要改为切片,请使用:
var buf []byte
buf = make([]byte, 256)
Run Code Online (Sandbox Code Playgroud)
区别:
数组变量表示整个数组; 它不是指向第一个数组元素的指针(如C中的情况).
这意味着当您分配或传递数组值时,您将复制其内容.(为了避免复制,你可以传递一个指向数组的指针,但那是一个指向数组的指针,而不是一个数组.)
一种思考数组的方法是作为一种结构,但有索引而不是命名字段:一个固定的-size复合值.
与:
切片是数组段的描述符.
它由指向数组的指针,段的长度及其容量(段的最大长度)组成.
如果要创建一个数组(将其分配给数组),那将是:
var buf [256]byte
buf = [256]byte{}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |