IT/Go

[Go/Golang] Go 1.16 부터 io/ioutil 패키지가 deprecated 됩니다.

wookiist 2021. 2. 18. 16:56

오늘 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
반응형