我有以下代碼:var ANIMATIONS *[]*SDL.Animable....func main() { *ANIMATIONS = make([]*SDL.Animable, 0, 100)但是跑步的時(shí)候就慌了。初始化這個(gè)的正確方法是什么?錯(cuò)誤 :panic: runtime error: invalid memory address or nil pointer dereference[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x4afe3a]goroutine 1 [running, locked to thread]:main.main()
1 回答

隔江千里
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
要修復(fù),您需要:
s := make([]*SDL.Animable, 0, 100) ANIMATIONS = &s
您的代碼出現(xiàn)恐慌的原因基本上是您取消引用了一個(gè) nil 指針(*ANIMATIONS
)。您需要獲取一個(gè)引用變量來(lái)存儲(chǔ)新切片,然后您可以獲得它的地址 ( &s
) 并將其存儲(chǔ)在指針中。
注意:以下內(nèi)容不起作用- 因?yàn)槟鸁o(wú)法&make([]*SDL.Animable, 0, 100)
獲取返回結(jié)果的地址 - 因此需要存儲(chǔ)結(jié)果并獲取其地址。
- 1 回答
- 0 關(guān)注
- 123 瀏覽
添加回答
舉報(bào)
0/150
提交
取消