首页 > 解决方案 > 如何用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))

它工作正常,但我希望我的代码可以尽可能简单。

标签: arraysgo

解决方案


你的意思:

arr := [3]int{1, 2, 3}
foo := Foo(arr)

这是一个可以尝试的游乐场链接。不过,这不是别名;分配时将复制数组。如果您正在寻找锯齿,请考虑使用切片。


您的原始代码创建一个新的Foo并尝试使用 初始化其第一个元素arr,但由于编译器指定的原因而失败。


推荐阅读