# Asking Questions

Unlike many projects, the Go project does not currently use GitHub Issues for general discussion or asking questions (that said, [#23745](https://github.com/golang/go/issues/23745) has been accepted, pending implementation). GitHub Issues are used for tracking bugs and [proposals](https://golang.org/s/proposal-process).

For asking questions, see:

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

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

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

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

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

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.