[ 
https://issues.apache.org/jira/browse/THRIFT-5859?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17938716#comment-17938716
 ] 

Duru Can Celasun edited comment on THRIFT-5859 at 3/26/25 7:57 PM:
-------------------------------------------------------------------

There are two use cases here, and I don't think they necessarily share the same 
solution.

For enumerating all values, the cleanest approach is returning []Foo.

For checking whether a value is valid/defined, I think it's cleaner to have a 
generated function like:

 
{code:java}
func (v Foo) IsValid() bool {
    return v==ONE || v==TWO
}
{code}
Or, alternatively:
{code:java}
var fooKnownValues = map[Foo]bool {
  ONE: true,
  TWO: true,
}

func (v Foo) IsValid() bool {
    return fooKnownValues[v]
}{code}
 


was (Author: calcifer):
There are two use cases here, and I don't think they necessarily share the same 
solution.

For enumerating all values, the cleanest approach is returning []Foo.

For checking whether a value is valid/defined, I think it's cleaner to have a 
generated function like:

 
{code:java}
func (Foo) IsValid(v Foo) bool {
    return v==ONE || v==TWO
}
{code}
Or, alternatively:
{code:java}
var fooKnownValues = map[Foo]bool {
  ONE: true,
  TWO: true,
}

func (Foo) IsValid(v Foo) bool {
    return fooKnownValues[v]
}{code}
 

> go: Generate a map for know values of an enum type
> --------------------------------------------------
>
>                 Key: THRIFT-5859
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5859
>             Project: Thrift
>          Issue Type: Task
>          Components: Go - Compiler
>    Affects Versions: 0.21.0
>            Reporter: Yuxuan Wang
>            Assignee: Yuxuan Wang
>            Priority: Major
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> When an enum type is defined in thrift, in generated go code, there's no way 
> to enumerate all the known values of the enum type. In most other languages 
> there's usually a way (via reflecting, access to some private fields, etc.) 
> to get those.
> I propose to also generate a map like:
> {code:go}
> var FooKnownValues = map[Foo]bool {
>   ONE: true,
>   TWO: true,
> }
> {code}
> So it can be used to enumerate all defined values programmatically.
> Open to suggestions on the name of the map value :)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to