[Go] golangci-lint: exhaustruct
exhaustruct๋ ๊ฝค ์ ์ฉํ ํธ์ ์ํ๋ ์ถ๊ฐ ์ ํํ ๋ฆฐํธ๋ค.
Go๋ ์ ์ฒ์ ์ผ๋ก ๊ตฌ์กฐ์ฒด ์์ฑ-์ด๊ธฐํ์ ๋ํด์ ๊ต์ฅํ ๋์จํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ
์ด๊ฑด ๋์ถฉ ๋น ๋ฅด๊ฒ ์ง๊ธฐ๋ ์ข์ง๋ง ๋ฒ๊ทธ์ ์์ฒ์ด ๋๊ธฐ๋ ํ๋ค.
exhaustruct๋ ์ด๋ฐ๊ฑธ ์ก์์ฃผ๋ lint๋ค.
์๋ฅผ ๋ค์ด ์ ์ฝ๋์ ๋ํด ๋ฆฐํธ๋ฅผ ๋๋ฆฌ๋ฉด
์ด๋ ๊ฒ ํ๋๊ฐ ๋๋ฝ๋์์์ ์๋ ค์ค๋ค.
๋ถ๋ถ์ ์ ์ฉ
๊ทผ๋ฐ ์ด๊ฑฐ๋ ๋ค์ ๊ณผ๊ฒฉํ ๊ฒฝํฅ์ด ์๋ ๋ฆฐํธ๋ผ์, ๊ธฐ์กด ํ๋ก์ ํธ์ ์ ์ญ์ ์ผ๋ก ์ ์ฉํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ๋ง๋ค.
๊ทธ๋์ ๋๋ ํ์์ ์ผ๋ก validation์ด ํ์ํ ๊ฒฝ์ฐ์ ๋ํด์๋ง ๊ฒ์ฌ๋ฅผ ํ๋๋ก ๊ตฌ์ฑํ๋ค.
๋ด ๊ฒฝ์ฐ ๋ํ์ ์ธ ์ฌ์ฉ์ฌ๋ก๋, fx DI๋ก ์ฃผ์ ๋ฐ๋ Usecase ๋ฑ์ ๋ ์ด์ด์ ๋ํด์ ๊ฒ์ฌ๋ฅผ ํ๋ ๊ฒ์ด์๋ค.
์ด๋ฐ๊ฑฐ ๋ง์ด๋ค.
๊ทธ๋์ ๋๋ ์ด๋ ๊ฒ ํ์ฑํ๋ฅผ ํด์ฃผ๊ณ
๋ค์๊ณผ ๊ฐ์ด ํจํด์ ํ์ฉํด์ ํน์ ๋ ์ด์ด์ ๊ตฌ์กฐ์ฒด๋ค์ ์ ๋ถ validationํ๋๋ก ์ค์ ํ๋ค.
์ ๊ธฐ์ .์ ๊ธฐ์ค์ผ๋ก ํด์ ์์ ํจํค์ง๋ช
์ด๊ณ , ๋ค๊ฐ ๊ตฌ์กฐ์ฒด๋ช
์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ ํจํค์ง ์๋์ ์์ผ๋ฉด์ ๊ตฌ์กฐ์ฒด๋ช
ํจํด์ด ์ผ์นํ๋ ๋ชจ๋ ๊ตฌ์กฐ์ฒด์ ๋ํด์ ๊ฒ์ฌ๋ฅผ ํด์ค๋ค.
exclude ๋ฃฐ์ ์ฌ์ฉํด์ ํ
์คํธํ์ผ๋ ์ ์ธํ๋๋ก ์ค์ ํ๋ค.
๊ทธ๋ผ ์ด์ ๋ญ ๋น ๋จ๋ฆด๋๋ง๋ค
์์๋ฆฌ๋ฅผ ํด๋ ๊ฒ์ด๋ค.