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.

Reply via email to