1 回答

TA貢獻2065條經驗 獲得超14個贊
這里的問題似乎與Connect方法有關,而不是真正與指針有關:
func (bot *Bot) Connect() (conn net.Conn, err error) {
ircbot := NewBot()
conn, err = net.Dial("tcp", bot.server+":"+bot.port)
// irc connection...
return bot.conn, nil
}
該方法被定義為在(指向)Bot 結構體上,但它Bot在這一行上創建了一個新的, :
ircbot := NewBot()
然后繼續使用定義方法的那個(稱為bot,不是ircbot)。如果您選擇保留它以便有單獨的NewBot和Connect功能(這很好),那么您應該更改它以便Connect實際使用實例化*Bot:
func (bot *Bot) Connect() (conn net.Conn, err error) {
conn, err = net.Dial("tcp", bot.server+":"+bot.port)
// irc connection...
return bot.conn, nil
}
并用這樣的東西調用它:
bot := NewBot()
conn, err := bot.Connect()
錯誤,
panic: runtime error: invalid memory address or nil pointer dereference
可能是因為您正在訪問bot該Connect方法(例如 in bot.server)但它尚未定義,并且指針為零。
- 1 回答
- 0 關注
- 154 瀏覽
添加回答
舉報