我正在尝试使用this库在Golang中创建reddit机器人,而Golang要求输入逗号,但是当我将其放在那里时,Go会引发其他错误。
这是我的main.go:
package main
import (
"github.com/turnage/graw/reddit"
)
func main() {
cfg := BotConfig{
Agent: "graw:doc_demo_bot:0.3.1 by /u/yourusername",
// Your registered app info from following:
// https://github.com/reddit/reddit/wiki/OAuth2
App: App{
ID: "sdf09ofnsdf",
Secret: "skldjnfksjdnf",
Username: "yourbotusername",
Password: "yourbotspassword",
}
}
bot, _ := NewBot(cfg)
bot.SendMessage("roxven", "Thanks for making this Reddit API!", "It's ok.")
}
以下是上面代码的输出(17:7处没有逗号):
# command-line-arguments
./main.go:17:6: syntax error: unexpected newline, expecting comma or }
当我将逗号放在此处时,输出如下:
# command-line-arguments
./main.go:4:3: imported and not used: "github.com/turnage/graw/reddit"
./main.go:8:10: undefined: BotConfig
./main.go:19:13: undefined: NewBot
我也尝试过在第16行后面加一个逗号(以便有两个),然后出现此错误:
# command-line-arguments
./main.go:16:36: syntax error: unexpected comma, expecting expression
./main.go:17:6: syntax error: unexpected newline, expecting comma or }
我不确定自己在做什么错。
答案 0 :(得分:2)
您的错误(通过添加逗号解决了语法问题之后)都彼此相关。按照书面规定,您不要使用已导入的包。使用reddit.BotConfig
,reddit.App
和reddit.NewBot
使用该包中的结构和函数。在Go中导入不会将内容带入全局顶级名称空间。
func main() {
cfg := reddit.BotConfig{
Agent: "graw:doc_demo_bot:0.3.1 by /u/yourusername",
// Your registered app info from following:
// https://github.com/reddit/reddit/wiki/OAuth2
App: reddit.App{
ID: "sdf09ofnsdf",
Secret: "skldjnfksjdnf",
Username: "yourbotusername",
Password: "yourbotspassword",
},
}
bot, _ := reddit.NewBot(cfg)
bot.SendMessage("roxven", "Thanks for making this Reddit API!", "It's ok.")
}
答案 1 :(得分:1)
您可以在后面加上,
App: App{
ID: "sdf09ofnsdf",
Secret: "skldjnfksjdnf",
Username: "yourbotusername",
Password: "yourbotspassword",
}, //like this
其他错误实际上是您需要修复的错误。 Golang是严格的,不允许使用未使用的导入或未使用的变量。另外,您还必须导入包含所用结构定义的软件包-BotConfig
和NewBot
。
您可以命名您的导入,以便无需进行reddit.BotConfig
即可引用您的导入。对于前
import r "github.com/turnage/graw/reddit"
这将使您可以简单地将r.BotConfig
用于ex。否则,每次您想使用BotConfig时,都必须将软件包名称称为reddit.BotConfig