# 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://golang.org/s/proposal-process) only.

For asking questions, see:

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

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

* [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)

* **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.