Hi

I want to declare a constant that maps an *ErrorCode*(string) like "100.01" 
to its *ErrorDescription*(string) like "Error description of 100.01".
Declaring Error as *code* and *description* is helpful to monitor logs 
based based on *ErrorCode* and show the *ErrorDescription* to the client.

Although go cannot create constant of type map, but it can be achieved in 
multiple ways.

--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
-------------
One possible way can be :- 


type ErrorCode string

const (
   E270_01 ErrorCode = "270.01"
   E270_02                   = "270.02"
)

var ErrDescription = map[ErrorCode]string{
   E270_01: "this is error description",
   E270_02: "this is error description",
}

type LogErr struct {
   Code        ErrorCode
   Description string
}

func getLogErr(e ErrorCode) LogErr {
   return LogErr{
      Code:        e,
      Description: ErrDescription[e],
   }
}

func TestErrorConstant(t *testing.T) {
   fmt.Println(getLogErr(E270_01))
}



This solves our purpose. But the problem is for every new error, we need to 
change things at two places, (1) Declare const like E270_02 (2) Add an entry in 
the *ErrDescription* map



-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Another possible way looks like :- 


type ErrorCode string

const (
   E270_01 ErrorCode = "270.01:this is error description"
   E270_02                   = "270.02:this is error description"
)

type LogErr struct {
   Code        string
   Description string
}

func getLogErr(e ErrorCode) LogErr {
  * token := strings.Split(string(e), ":")*
   return LogErr{
      Code:        token[0],
      Description: token[1],
   }
}

func TestErrorConstant(t *testing.T) {
   fmt.Println(getLogErr(E270_01))
}



This way looks promising, but don't really like the way of splitting string 
using ":"




-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

I think best way could have been something like ---

const (
   E270_01 ErrorCode = {"270.01", "this is error description"}
)



Since Golang doesn't support the Constant of struct, what could be your 
approach?

Any suggestion is really appreciated.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/198455c0-4f81-4e2f-a166-72796a15d498%40googlegroups.com.

Reply via email to