1 回答
TA贡献2065条经验 获得超13个赞
这里的问题似乎与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 关注
- 133 浏览
添加回答
举报