FWIW, I wouldn't use an "enum" (those don't exist in go) and would probably
do something like this: https://play.golang.org/p/J6_hssueao


On Wed, Apr 26, 2017 at 11:41 AM Tong Sun <suntong...@gmail.com> wrote:

>
>
> On Tuesday, April 25, 2017 at 4:25:14 PM UTC-4, Tong Sun wrote:
>>
>>
>> On Tue, Apr 25, 2017 at 3:42 PM, Egon wrote:
>>
>> I think the extra "enum" package would reduce readability. The code you
>>> are putting into package is ~10 lines of code... so the extra package
>>> doesn't reduce much typing, but it also loses enum typing... Depending on
>>> the enum, you may want to have different properties as well...
>>> I chose the name "ciota" because of "custom-iota", in practice you would
>>> want something more descriptive such as "NewWeekday".
>>
>>
>> So the solution is easy, don't create a general purpose package for it :D
>>>
>>
>> OK.
>>
>> If going that route, and I have several enum series to define, I need to
>> define a series of almost identical functions, right? Hmm..., that'd be
>> really messy.
>>
>> Ok, I'll think of a better way on my own, which I doubt I could, :-)
>>
>
>
> Thought I need to use reflection, but after several round of wrestling, I
> managed to do without reflection at all:
>
>
> package main
>
>
> import (
>  "fmt"
>
>
>  enum "github.com/suntong/enum"
> )
>
>
> var (
>  example enum.Enum
>  Alpha   = example.Iota("Alpha")
>  Beta    = example.Iota("Beta")
>
>
>  weekday enum.Enum
>  Sunday  = weekday.Iota("Sunday")
>  Monday  = weekday.Iota("Monday")
> )
>
>
> func main() {
>  fmt.Printf("%s\n", example.String(Alpha))
>  fmt.Printf("%s\n", example.String(Beta))
>
>  fmt.Println("=======")
>  fmt.Printf("%d\t%d\n", Alpha, Alpha+1)
>
>  fmt.Printf("%s\t%s\n", example.String(Beta-1), example.String(Alpha+1))
>  fmt.Println("=======")
>  if a, ok := example.Get("Alpha"); ok {
>  fmt.Printf("%d: %s\n", a, example.String(a))
>  }
>  if b, ok := example.Get("Beta"); ok {
>  fmt.Printf("%d: %+v\n", b, example.String(b))
>  }
>
>
>  fmt.Printf("%d:%s\n", Sunday, weekday.String(Sunday))
>  fmt.Printf("%d:%s\n", Monday, weekday.String(Monday))
> }
>
>
> The output:
>
> Alpha
> Beta
> =======
> 0       1
> Alpha   Beta
> =======
> 0: Alpha
> 1: Beta
> 0:Sunday
> 1:Monday
>
> Ref:
>
> https://github.com/suntong/lang/blob/master/lang/Go/src/ds/EnumsStr1p.go
>
> and
>
> https://github.com/suntong/enum
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to