Go에서 값 목록에 대한 사용자 정의 플래그 유형을 정의하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-16 18:13:03
원래의
925명이 탐색했습니다.

How to Define a Custom Flag Type for a List of Values in Go?

Go에서 플래그로 값 목록 가져오기

Go에서 플래그 패키지는 명령줄 인수 구문 분석을 지원합니다. 그러나 처음에는 제한된 범위의 데이터 유형(String, Int, Bool)만 제공했습니다. 더 복잡한 데이터를 수용하려면 고유한 플래그 유형을 정의하고 flag.Var()를 사용하여 이를 바인딩할 수 있습니다.

목록에 대한 사용자 정의 플래그 유형

플래그를 고려하세요. 여러 값을 목록으로 허용합니다. 먼저 사용자 정의 플래그 유형을 정의합니다.

type arrayFlags []string

// String is an implementation of the flag.Value interface
func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

// Set is an implementation of the flag.Value interface
func (i *arrayFlags) Set(value string) error {
    *i = append(*i, value)
    return nil
}
로그인 후 복사

사용자 정의 플래그 사용

다음으로 사용자 정의 플래그와 바인딩할 이 유형의 변수를 선언합니다.

var myFlags arrayFlags
로그인 후 복사

사용자 정의 플래그 등록

마지막으로 플래그 패키지를 사용하여 사용자 정의 플래그를 등록할 수 있습니다.

flag.Var(&myFlags, "list1", "Some description for this param.")
로그인 후 복사

이제 통과할 수 있습니다. 프로그램을 실행할 때 이 플래그에 여러 값을 추가하세요.

go run your_file.go --list1 value1 --list1 value2
로그인 후 복사

업데이트된 코드 조각

참고로 전체 코드 조각은 다음과 같습니다.

package main

import (
    "flag"
    "fmt"
)

type arrayFlags []string

// String is an implementation of the flag.Value interface
func (i *arrayFlags) String() string {
    return fmt.Sprintf("%v", *i)
}

// Set is an implementation of the flag.Value interface
func (i *arrayFlags) Set(value string) error {
    *i = append(*i, value)
    return nil
}

var myFlags arrayFlags

func main() {
    flag.Var(&myFlags, "list1", "Some description for this param.")
    flag.Parse()
}
로그인 후 복사

위 내용은 Go에서 값 목록에 대한 사용자 정의 플래그 유형을 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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