我正在尝试我的第一个 go 程序,它应该是一个非常简单的 IRC 机器人。
我已经完成了部分连接等,但我对结构和指针等感到困惑。这些结构对我来说是来自使用类的语言的新手。
我有这个结构和它的构造函数:
type Bot struct {
server string
port string
nick string
channel string
pass string
conn net.Conn
}
// NewBot main config
func NewBot() *Bot {
return &Bot{
server: "irc.twitch.tv",
port: "6667",
nick: "username",
channel: "#channel",
pass: "password123",
conn: nil,
}
}
我的 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
}
一切正常,我遇到的问题是使用另一种方法到我的名为 Message 的结构中。它只是应该发送消息。看起来像这样:
// Message to send a message
func (bot *Bot) Message(message string) {
if message == "" {
return
}
fmt.Printf("Bot: " + message + "\n")
fmt.Fprintf(bot.conn, "PRIVMSG "+bot.channel+" :"+message+"\r\n")
}
每次当我尝试使用此功能时,我都会收到此错误并且程序崩溃
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x20 pc=0x463d73]
我不确定如何正确使用 & 和 * 符号来实现我想要做的事情。
我认为 goroutine 是用于多线程的,通过说“go [do something]”来完成,但我不会在任何地方使用它。
翻翻过去那场雪
相关分类