Го требует запятую, когда ставится, другие несвязанные ошибки выбрасываются - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь создать в 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 ]

2 голосов
/ 23 марта 2019

Ваши ошибки (после исправления синтаксической проблемы путем добавления запятой) все связаны друг с другом. Как написано, вы не используете пакет, который вы импортировали. Используйте 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 голос
/ 23 марта 2019

Вы можете поставить , после

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 в качестве примера. В противном случае каждый раз, когда вы захотите использовать BotConfig, вам придется ссылаться на имя пакета как reddit.BotConfig

...