Go需要逗号,当放在那里时,会引发其他不相关的错误

时间:2019-03-22 21:58:06

标签: go reddit

我正在尝试使用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 }

我不确定自己在做什么错。

2 个答案:

答案 0 :(得分:2)

您的错误(通过添加逗号解决了语法问题之后)都彼此相关。按照书面规定,您不要使用已导入的包。使用reddit.BotConfigreddit.Appreddit.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是严格的,不允许使用未使用的导入或未使用的变量。另外,您还必须导入包含所用结构定义的软件包-BotConfigNewBot

您可以命名您的导入,以便无需进行reddit.BotConfig即可引用您的导入。对于前

import r "github.com/turnage/graw/reddit"

这将使您可以简单地将r.BotConfig用于ex。否则,每次您想使用BotConfig时,都必须将软件包名称称为reddit.BotConfig