因此,我將切片重命名為在函數中使用,其中一個連接到數組(如類方法)。type Points []Pointfunc (p Points) Isset(ip Point) bool { for _, i := range p { if i.Hash == ip.Hash { return true } } return false}但這沒關系,因為在另一個函數中,它試圖通過類型 Points 傳遞 slice,我遇到了一些麻煩......這是示例:func (p Points) Merge(ip Points) { fmt.Println(p)}在第一個函數中 - 我可以將我的p變量作為數組訪問。在第二個 - p- 只是空數組。但是,如果我更改傳遞變量的類型 - 一切都會好起來的。我該怎么辦...我需要指定我的合并功能。這個解決方案看起來很棒,但不起作用。
2 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
我不確定我是否理解,這是一個游戲示例,據我所知,這兩個功能都按預期工作。
https://play.golang.org/p/n5ch-Wqbil
也許您在從另一個函數調用一個函數時遇到了一些問題(比如從 Merge 調用 Isset?)在這種情況下,@Games 的答案可能仍然適用。
編輯此示例顯示我認為您可能正在嘗試做的事情。 https://play.golang.org/p/CNEt-poKdN,它似乎工作得很好(雖然有 N^2 次性能)

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
這是因為您需要說這Points是對Points. 您可以通過以下方式做到這一點:
func (p *Points) Isset(ip Point) bool {
for _, i := range p {
if i.Hash == ip.Hash {
return true
}
}
return false
}
注意我們如何設置*Points而不是Points. 這告訴 go 我們想要使用Points我們從中調用方法的結構的實例。
- 2 回答
- 0 關注
- 210 瀏覽
添加回答
舉報
0/150
提交
取消