arrays - 如何附加到由指针标识的数组
问题描述
以下代码段错误 - 应该如何表达?
package main
func main() {
var a *[]int
*a = make([]int, 0)
*a = append(*a, 1)
}
解决方案
使您的指针示例工作
声明后,您的指针变量将是nil,
,因此您无法设置指向的值(它还没有指向任何地方)。
您必须首先为指向的值分配内存,例如使用内置new()
函数:
var a *[]int
a = new([]int)
*a = make([]int, 0)
*a = append(*a, 1)
另一种选择是使用切片复合文字,并获取其地址:
var a *[]int
a = &[]int{}
*a = make([]int, 0)
*a = append(*a, 1)
另一种选择是使用另一个切片类型的变量[]int
,并将其地址分配给a
:
var a *[]int
var b []int
a = &b
*a = make([]int, 0)
*a = append(*a, 1)
放弃指针
但是要知道使用切片不需要指针。您可以将返回值分配给make()
非指针切片变量:
var a []int
a = make([]int, 0)
a = append(a, 1)
推荐阅读
- c++ - 将迭代器转换为“lower_bound”的整数时输出错误
- reactjs - 我编写了用于在反应中列出书籍的代码,但 FlatList 在我的代码中不起作用,我该如何解决?
- azure - Azure 资源访问管理及其与租户的关系
- python - 如何删除张量流中的预取数据
- javascript - 如何在 JavaScript 中显示用户输入(由几个提交组成)?
- sql - 如何在雄辩的where条件中使用case语句
- reactjs - 为什么 BlobProvider 仅在应用程序第一次运行时生成 URL?
- eclipse - 如何在eclipse中通过正则表达式模式用小写替换搜索到的字符串
- firebase - firebase 实时数据库下载定价与 firestore 读取
- python - 表单中的 POST 未在 django 项目中调用