# Asking Questions

Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and [proposals](https://go.dev/s/proposal-process) only.

For asking questions, see:

* [Stack Overflow](https://stackoverflow.com/questions/tagged/go) with questions tagged "go" or "golang"

* [The Go Forum](https://forum.golangbridge.org/), a web-based forum

* [Gophers Discord](https://discord.gg/golang) "Get live support and talk with other gophers on the Go Discord"

* [Gophers Slack](https://gophers.slack.com), use the [invite app](https://invite.slack.golangbridge.org/) for access. The `#general` channel is a good starting point.

* [Go Community on Hashnode](https://hashnode.com/n/go) with questions and posts tagged with "go"

* [The golang-nuts mailing list](https://groups.google.com/d/forum/golang-nuts)

* [Subreddit for Go](https://www.reddit.com/r/golang/)

* **IRC** channel #go-nuts on Libera

If we closed your issue as a question with a link to this wiki, we apologize. Please ask the question on one of the above forums.

Please do not write your question on a wiki page.  Please use one of the above forums.