Go: Why are there no enums in Go?

Created on 23 Sep 2016  路  5Comments  路  Source: golang/go

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.

FrozenDueToAge

Most helpful comment

type HTTP string

const (
    GET    = HTTP("GET")
    POST   = HTTP("POST")
    DELETE = HTTP("DELETE")
    PUT    = HTTP("PUT")
)

All 5 comments

It would be really nice to have something like:

enum HTTP struct {
    GET   string    "GET"
    POST            "POST"
    DELETE          "DELETE"
    PUT             "PUT"
}

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.

type HTTP string

const (
    GET    = HTTP("GET")
    POST   = HTTP("POST")
    DELETE = HTTP("DELETE")
    PUT    = HTTP("PUT")
)

@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?

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

Was this page helpful?
0 / 5 - 0 ratings

Related issues

rsc picture rsc  路  225Comments

griesemer picture griesemer  路  808Comments

ianlancetaylor picture ianlancetaylor  路  519Comments

derekperkins picture derekperkins  路  180Comments

ghost picture ghost  路  222Comments