> 백엔드 개발 > Golang > Go에서 `fmt.Println`이 `String()`보다 `Error()`를 선호하는 이유는 무엇입니까?

Go에서 `fmt.Println`이 `String()`보다 `Error()`를 선호하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-30 04:22:11
원래의
685명이 탐색했습니다.

Why Does `fmt.Println` Prefer `Error()` Over `String()` in Go?

Error()는 fmt.Println의 String()을 재정의합니다.

Go 프로그래밍 언어에서 유형이 String()과 String()을 모두 구현하는 경우 Error() 메서드의 경우 fmt.Println 함수는 Error()에 우선 순위를 부여합니다. 이는 특정 유형에 대해 두 메소드가 모두 구현되면 fmt.Println이 Error()에 의해 생성된 출력을 사용한다는 것을 의미합니다.

이러한 이유를 이해하려면 해당 문서를 살펴보는 것이 중요합니다. fmt 패키지. 문서에 따르면 fmt가 다양한 유형의 데이터 형식을 지정하는 방법을 제어하는 ​​특정 규칙이 있습니다. 이러한 규칙은 다음 순서로 적용됩니다.

  1. 데이터가 Formatter 인터페이스를 구현하는 경우 Formatter 메서드를 사용하여 데이터 형식을 지정합니다.
  2. %#v 형식이 사용되는 경우 데이터가 GoStringer 인터페이스를 구현하는 경우 GoStringer 메서드를 사용하여 데이터 형식을 지정합니다.
  3. 데이터가 오류 인터페이스를 구현하는 경우 Error 메서드가 사용됩니다. 데이터 형식을 지정합니다.
  4. 데이터가 String() 메서드를 구현하는 경우 String() 메서드를 사용하여 데이터 형식을 지정합니다.

제공된 예에서 Person 유형 String() 및 Error() 메서드를 모두 구현합니다. 그러나 Person 유형을 인쇄하기 위해 fmt.Println 함수가 호출되면 String() 메서드 대신 Error() 메서드가 호출됩니다. 이는 fmt 패키지 설명서에 설명된 규칙에 따라 Error() 메서드가 String() 메서드보다 우선하기 때문입니다.

따라서 유형이 String() 및 Error() 메서드를 모두 구현하는 경우 fmt.Println 함수는 항상 Error() 메서드의 출력을 사용합니다. 서식 규칙 순서에 따라 Error() 메서드가 String() 메서드보다 순위가 높기 때문입니다.

위 내용은 Go에서 `fmt.Println`이 `String()`보다 `Error()`를 선호하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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