Hi Kurtis Thanks for the response. As the doc says, *stringer* can be used to generate only *int* constants. String constants are not supported. In my case, the constant will be like -
type ErrCode string const ( E201_01 ErrCode = "description text" ) Actually I need both the strings(*E201_01* and "*description text"*) accessible in my code. Is this also achievable using generate/stringer? On Tue, May 5, 2020 at 10:14 AM Kurtis Rader <[email protected]> wrote: > See https://blog.golang.org/generate and > https://godoc.org/golang.org/x/tools/cmd/stringer for an example of a now > standard Go tool that seems to do what you want. > > On Mon, May 4, 2020 at 9:30 PM Amarjeet Anand <[email protected]> > wrote: > >> 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 [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/198455c0-4f81-4e2f-a166-72796a15d498%40googlegroups.com >> <https://groups.google.com/d/msgid/golang-nuts/198455c0-4f81-4e2f-a166-72796a15d498%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > Kurtis Rader > Caretaker of the exceptional canines Junior and Hank > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAORUUQULph5-6n985oTEt5vNdT%2BBGDXrKrhT6Syt%2BzYsitPiEw%40mail.gmail.com.
