arrays - 如何用golang中的另一个初始化别名数组?
问题描述
type Foo [3]int
arr := [3]int {1, 2, 3}
foo := &Foo{arr}
它在golang中不起作用,它说:
不能将“arr”(类型 [3]int)用作 int 类型
我应该如何正确和优雅地做到这一点;-),我希望我的代码可以写如下:
func_name(&Foo{arr}) // func_name is to receive a *Foo and do something
如果我这样写我的代码:
type Foo struct {array [3]int}
arr := [3]int {1, 2, 3}
func_name(&Foo(arr))
它工作正常,但我希望我的代码可以尽可能简单。
解决方案
你的意思:
arr := [3]int{1, 2, 3}
foo := Foo(arr)
这是一个可以尝试的游乐场链接。不过,这不是别名;分配时将复制数组。如果您正在寻找锯齿,请考虑使用切片。
您的原始代码创建一个新的Foo
并尝试使用 初始化其第一个元素arr
,但由于编译器指定的原因而失败。
推荐阅读
- c++ - 缺少 SDL2main.lib
- blazor - 当级联参数已更改时,有没有办法在 blazor 子组件中进行判断?
- javascript - Node.js 在录制期间将五个(或更多)音频流同步流式传输
- docker - 从 docker 容器创建本地主机文件,使用绑定挂载
- python - Pygame:有没有办法在 M1 Mac 上设置正确的屏幕尺寸/分辨率?
- java - 无法将 JSESSIONID 传递给前端域
- sql - 如何制定此 SQL 查询?
- c# - HttpContext.RequestServices.GetService<>() 返回的证书验证服务为空
- ios - 在 CoreLocation 中保持经度和纬度坐标为零
- javascript - jQuery | 从 URL 中获取 HTML 并每 3 秒在 div 中显示它而不重复?