type Foo [3]intarr := [3]int {1, 2, 3}foo := &Foo{arr}它在golang中不起作用,它說:不能使用“arr”(類型 [3]int)作為類型 int我應(yīng)該如何正確和優(yōu)雅地做到這一點;-),我希望我的代碼可以寫成如下: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))它工作正常,但我希望我的代碼可以盡可能簡單。
2 回答

慕斯709654
TA貢獻1840條經(jīng)驗 獲得超5個贊
您的意思是:
arr := [3]int{1, 2, 3} foo := Foo(arr)
這里有一個游樂場鏈接可以嘗試一下。這不是一個別名;分配時將復(fù)制數(shù)組。如果要查找別名,請考慮改用切片。
原始代碼會創(chuàng)建一個新的元素,并嘗試使用 初始化其第一個元素,但由于編譯器指定的原因而失敗。Foo
arr

米琪卡哇伊
TA貢獻1998條經(jīng)驗 獲得超6個贊
假設(shè)“別名”是指“兩種不同類型的人引用同一個底層緩沖區(qū)”:獲取指向數(shù)組的指針,然后將其轉(zhuǎn)換為另一種類型的指針。
package main
import "fmt"
type Foo [1]int
func main() {
bar := [1]int{}
foo := (*Foo)(&bar)
bar[0] = 0xdeadbeef
fmt.Println(*foo)
}
這在圍棋中既不優(yōu)雅也不習(xí)慣用語——這就是切片的用途。
- 2 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報
0/150
提交
取消