Go에서 인쇄된 바이트 버퍼의 다른 동작
Go에서는 바이트를 인쇄합니다. 버퍼 값은 버퍼 값인지 여부에 따라 별개의 출력을 생성할 수 있습니다. 포인터 또는 일반 값.
bytes.Buffer를 생성할 때 new(bytes.Buffer), 버퍼에 대한 포인터를 얻습니다. 값의 String() 메서드에 액세스하고 이를 인쇄하면 버퍼의 내용인 Hello World가 출력됩니다.
그러나 var buf bytes.Buffer를 사용하면 bytes.Buffer 유형의 값이 직접 생성됩니다. 이 값에는 String() 메서드가 없으므로 기본 형식이 인쇄됩니다. 그 결과 자세한 출력이 발생합니다. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0}.
이러한 차이는 Go가 다음과 같은 경우 String() 메서드를 확인하기 때문에 발생합니다. 값을 인쇄합니다. 존재하는 경우 값의 표현을 얻기 위해 메소드가 호출됩니다. *bytes.Buffer와 같은 포인터 값의 경우 String() 메서드를 사용할 수 있지만 bytes.Buffer와 같은 일반 값의 경우 사용할 수 없습니다.
포인터와 달리 일반 값은 기본 형식이 다릅니다. 인쇄 시: {field0 field1 ...}, 해당 필드를 표시합니다. 이는 바이트를 인쇄할 때 관찰되는 다양한 출력에 대해 설명합니다. 포인터인지 일반 값인지에 따라 버퍼 값이 나타납니다.
위 내용은 Go에서 `bytes.Buffer`를 인쇄하면 포인터인지 값인지에 따라 다른 결과가 생성되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!