> 백엔드 개발 > Golang > `String()` 메서드를 수동으로 정의하지 않고 Go Enum의 이름을 검색하려면 어떻게 해야 합니까?

`String()` 메서드를 수동으로 정의하지 않고 Go Enum의 이름을 검색하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-07 01:59:15
원래의
1012명이 탐색했습니다.

How Can I Retrieve the Name of a Go Enum Without Manually Defining a `String()` Method?

Golang에서 String() 메소드를 추가하지 않고도 Enum 이름을 얻을 수 있나요?

Go에서는 enum의 이름을 얻으려면 일반적으로 다음을 정의해야 합니다. func(TheEnum) String() 문자열 메서드. 그러나 이는 특히 열거형이 많은 경우 지루할 수 있습니다.

한 가지 대안은 표준 도구 패키지에 있는 Go의 스트링거 도구를 사용하는 것입니다. 열거형 정의와 동일한 디렉터리에서 다음 명령을 실행하면 됩니다.

stringer -type=Pill
로그인 후 복사
로그인 후 복사

이렇게 하면 func(Pill) String() 문자열 메서드 정의가 포함된 파일이 생성됩니다.

package painkiller

type Pill int

const (
    Placebo Pill = iota
    Aspirin
    Ibuprofen
    Paracetamol
    Acetaminophen = Paracetamol
)
로그인 후 복사

문자열 명령 실행:

stringer -type=Pill
로그인 후 복사
로그인 후 복사

다음을 생성합니다. file:

// Code generated by "stringer -type=Pill"; DO NOT EDIT.

package painkiller

import "strconv"

func (p Pill) String() string {
    switch p {
    case Placebo:
        return "Placebo"
    case Aspirin:
        return "Aspirin"
    case Ibuprofen:
        return "Ibuprofen"
    case Paracetamol:
        return "Paracetamol"
    case Acetaminophen:
        return "Acetaminophen"
    }
    return "Pill(" + strconv.FormatInt(int64(p), 10) + ")"
}
로그인 후 복사

그런 다음 이 메소드를 사용하여 열거형의 이름을 가져올 수 있습니다. 예를 들어:

fmt.Println(Pill(3).String()) // Paracetamol
로그인 후 복사

스트링거 도구는 Go의 go generate 명령과 함께 사용할 수 있습니다. 1.4 각 열거형에 대해 func(TheEnum) String() 문자열 메서드를 자동으로 생성합니다.

위 내용은 `String()` 메서드를 수동으로 정의하지 않고 Go Enum의 이름을 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿