목적에 맞는 편리한 도구는 표준 라이브러리 bytes.Buffer
(see the package docs)에서 찾을 수 있습니다.
io.Reader
을 구현하는 개체가 있다고 가정 해보십시오. 즉, Read([]byte) (int, os.Error)
이라는 서명이있는 메서드가 있다고 가정 해 보겠습니다.
일반적인 예
가있는
os.File
: 당신은 단순히
bytes.Buffer
(그 제로 가치를 창출, 문자열로 해당 파일의 내용을 읽고 싶다면
f, err := os.Open("/etc/passwd", os.O_RDONLY, 0644)
은 즉시 사용 가능한 버퍼이다, 그래서 당신은) 생성자를 호출 할 필요는 없다 :
var b bytes.Buffer
사용 io.Copy
을 버퍼에 파일의 내용을 복사 :
n, err := io.Copy(b, f)
s := b.String()
:
그리고 문자열로 버퍼의 내용을 검색 할 버퍼의 문자열 메소드를 호출 -
(. 그들은 더 많거나 적은 같은 것 io.Copy
를 사용하는 대신 b.ReadFrom(f)
것) bytes.Buffer
은 자동으로 파일의 내용을 저장하기 위해 자랄 것이므로 byte
슬라이스 등을 할당하고 늘리는 것에 대해 걱정할 필요가 없습니다.
충분히 가까이 있지만 사실은 아닙니다. 문자열은 바이트 배열과 다르게 처리됩니다. – cthom06
호기심, 문자열 끝 (또는 끝 문자) 도달 시점을 확인하는 방법? 또는 char (캐스팅 사용)을 통해 연결에서 문자열을 작성할 수 있습니까? – helios