golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
124.4k stars 17.71k forks source link

Why are there no enums in Go? #17205

Closed RaeesBhatti closed 8 years ago

RaeesBhatti commented 8 years ago

What version of Go are you using and what is your operating system and processor architecture?

go version go1.7.1 darwin/amd64

What did you do?

Tried to declare enums in my package.

What did you expect to see?

That there would be some mechanism to declare enums types.

What did you see instead?

That there was no native way to declare enum types in Go lang instead I saw some weird hacks to make things work barely.

What is your question?

Why is there no native way to declare enum types in Go lang, it is such a useful and convenient feature. Here are enums in HackLang for example.

RaeesBhatti commented 8 years ago

It would be really nice to have something like:

enum HTTP struct {
    GET   string    "GET"
    POST            "POST"
    DELETE          "DELETE"
    PUT             "PUT"
}
ALTree commented 8 years ago

Hi! The Go project does not uses the github issue tracker for asking questions. In fact, there is no "What is you question?" header in the issue template.

See the Questions wiki page for a list of places where you could ask about enums.

stemar94 commented 8 years ago
type HTTP string

const (
    GET    = HTTP("GET")
    POST   = HTTP("POST")
    DELETE = HTTP("DELETE")
    PUT    = HTTP("PUT")
)
RaeesBhatti commented 8 years ago

@stemar94 But you can't use this to verify type, e.g. in Type struct:

type Request struct {
    Method    HTTP    `json:"method"`
}

It will not make sure that values are one of the consts. Any ideas?

bradfitz commented 8 years ago

Yeah, let's discuss this on the mailing list or Slack instead. See https://golang.org/wiki/Questions