오늘 Go 1.16이 릴리즈 되고 나서 릴리즈 노트를 읽던 중에 io/ioutil이 지원 중단될 예정이라는 걸 보았다.
(참고 : Go 1.16 Release Notes - The Go Programming Language (golang.org))
릴리즈 노트에는 다음과 같이 기록되어 있다.
The io/ioutil package has turned out to be a poorly defined and hard to understand collection of things. All functionality provided by the package has been moved to other packages. The io/ioutil package remains and will continue to work as before, but we encourage new code to use the new definitions in the io and os packages.
io/ioutil 패키지는 제대로 정의가 되지 않았으며, 일반적으로 이해하기 어려운 것으로 보인다며, 해당 패키지에서 제공하던 모든 기능을 다른 패키지로 이동하였다고 한다.
물론 호환성을 위해 io/ioutil 패키지는 그대로 남아는 있고, 이전과 같이 동작은 한다. 그래도 앞으로 코드를 짜게 된다면 io 패키지와 os 패키지에 새롭게 정의된 메서드를 활용하는 것을 추천하였다.
io/ioutil 패키지에서 옮겨간 메서드는 다음과 같다.
- Discard => io.Discard
- NopCloser => io.NopCloser
- ReadAll => io.ReadAll
- ReadDir => os.ReadDir (주의 : fs.FileInfo 슬라이스가 아닌 os.DirEntry의 슬라이스가 반환된다.)
- ReadFile => os.ReadFile
- TempDir => os.MkdirTemp
- TempFile => os.CreateTemp
- WriteFile => os.WriteFile
반응형
'IT > Go' 카테고리의 다른 글
[Go/Golang] Raw(`) string과 Interpreted(") string의 차이점을 알아보자 (0) | 2021.02.22 |
---|---|
[Go/Golang] go test 실행 시 gcc 에러가 발생하는 경우(mac, windows, linux) (0) | 2021.02.19 |
[Go/Golang] go get 과 go install 은 어떻게 다른 것일까? (0) | 2021.02.19 |
[Go/Golang] Go 1.16 정식 Release! Apple Silicon Mac Native 지원 (0) | 2021.02.18 |
[Go/Golang] Go Slice에서 중복 제거 하기(struct 활용) (0) | 2021.02.14 |