>백엔드 개발 >Golang >앞에 0이 있는 정수 인수는 flag.IntVar 또는 flag.Int에 의해 8진수로 구문 분석됩니다.

앞에 0이 있는 정수 인수는 flag.IntVar 또는 flag.Int에 의해 8진수로 구문 분석됩니다.

王林
王林앞으로
2024-02-08 21:10:08627검색

带有前导零的整数参数由 flag.IntVar 或 flag.Int 解析为八进制

php 편집기 Yuzai가 소개했습니다. Go 언어에서는 명령줄 매개변수를 플래그 패키지를 통해 구문 분석할 수 있습니다. flag.IntVar 또는 flag.Int를 사용하여 앞에 0이 있는 정수 인수를 구문 분석하면 이를 8진수로 구문 분석합니다. 즉, 명령줄에 0으로 시작하는 정수 인수를 입력하면 10진수가 아닌 8진수로 구문 분석됩니다. 때로는 인수를 8진수 대신 10진수로 처리하고 싶을 수도 있기 때문에 이는 주의해야 할 사항입니다. 따라서 플래그 패키지를 사용하여 매개변수를 구문 분석할 때 선행 0이 있는 정수 매개변수를 구문 분석하는 방법에 특별한 주의를 기울여야 합니다.

질문 내용


다음 코드를 작성했습니다:

으아악

이 명령을 실행할 때:

으아악

출력이 정확합니다.

하지만 010 运行它,golang 会将 010 解析为八进制(010 == 8)을 사용한다면 왜 그럴까요?

으아악

이거 버그인가요?


Solution


오, 이건 끔찍한 함정이군요.

이거 버그인가요?

2011년 Go 1.0.0 이전에 의도적으로 추가되었습니다. p> 플래그: 16진수 및 8진수 정수 플래그를 입력할 수 있습니다.

문서화된 플래그의 사용법보다는

strconv.ParseInt 문서에서 전체 동작을 찾을 수 있습니다. strconv.ParseInt 的文档中找到完整的行为,而不是它的flag

위 내용은 앞에 0이 있는 정수 인수는 flag.IntVar 또는 flag.Int에 의해 8진수로 구문 분석됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제