亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在golang中用另一個別名數組初始化別名數組?

如何在golang中用另一個別名數組初始化別名數組?

Go
尚方寶劍之說 2022-08-24 12:51:21
type Foo [3]intarr := [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))它工作正常,但我希望我的代碼可以盡可能簡單。
查看完整描述

2 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

您的意思是:

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

這里有一個游樂場鏈接可以嘗試一下。這不是一個別名;分配時將復制數組。如果要查找別名,請考慮改用切片。


原始代碼會創建一個新的元素,并嘗試使用 初始化其第一個元素,但由于編譯器指定的原因而失敗。Fooarr


查看完整回答
反對 回復 2022-08-24
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

假設“別名”是指“兩種不同類型的人引用同一個底層緩沖區”:獲取指向數組的指針,然后將其轉換為另一種類型的指針。


package main


import "fmt"


type Foo [1]int


func main() {

    bar := [1]int{}

    foo := (*Foo)(&bar)


    bar[0] = 0xdeadbeef

    fmt.Println(*foo)

}


這在圍棋中既不優雅也不習慣用語——這就是切片的用途。


查看完整回答
反對 回復 2022-08-24
  • 2 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號