[Go] golangci-lint: exhaustruct

exhaustruct๋Š” ๊ฝค ์œ ์šฉํ•œ ํŽธ์— ์†ํ•˜๋Š” ์ถ”๊ฐ€ ์„ ํƒํ˜• ๋ฆฐํŠธ๋‹ค.

Go๋Š” ์„ ์ฒœ์ ์œผ๋กœ ๊ตฌ์กฐ์ฒด ์ƒ์„ฑ-์ดˆ๊ธฐํ™”์— ๋Œ€ํ•ด์„œ ๊ต‰์žฅํžˆ ๋А์Šจํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ

์ด๊ฑด ๋Œ€์ถฉ ๋น ๋ฅด๊ฒŒ ์งœ๊ธฐ๋Š” ์ข‹์ง€๋งŒ ๋ฒ„๊ทธ์˜ ์›์ฒœ์ด ๋˜๊ธฐ๋„ ํ•œ๋‹ค.
exhaustruct๋Š” ์ด๋Ÿฐ๊ฑธ ์žก์•„์ฃผ๋Š” lint๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ € ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋ฆฐํŠธ๋ฅผ ๋Œ๋ฆฌ๋ฉด

์ด๋ ‡๊ฒŒ ํ•„๋“œ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Œ์„ ์•Œ๋ ค์ค€๋‹ค.




๋ถ€๋ถ„์  ์ ์šฉ

๊ทผ๋ฐ ์ด๊ฑฐ๋Š” ๋‹ค์†Œ ๊ณผ๊ฒฉํ•œ ๊ฒฝํ–ฅ์ด ์žˆ๋Š” ๋ฆฐํŠธ๋ผ์„œ, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ์ „์—ญ์ ์œผ๋กœ ์ ์šฉํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ๋งŽ๋‹ค.
๊ทธ๋ž˜์„œ ๋‚˜๋Š” ํ•„์ˆ˜์ ์œผ๋กœ validation์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ๋‹ค.

๋‚ด ๊ฒฝ์šฐ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ์šฉ์‚ฌ๋ก€๋Š”, fx DI๋กœ ์ฃผ์ž…๋ฐ›๋Š” Usecase ๋“ฑ์˜ ๋ ˆ์ด์–ด์— ๋Œ€ํ•ด์„œ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

์ด๋Ÿฐ๊ฑฐ ๋ง์ด๋‹ค.


๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ํ™œ์„ฑํ™”๋ฅผ ํ•ด์ฃผ๊ณ 


๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒจํ„ด์„ ํ™œ์šฉํ•ด์„œ ํŠน์ • ๋ ˆ์ด์–ด์˜ ๊ตฌ์กฐ์ฒด๋“ค์„ ์ „๋ถ€ validationํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.
์ €๊ธฐ์„œ .์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ ์•ž์€ ํŒจํ‚ค์ง€๋ช…์ด๊ณ , ๋’ค๊ฐ€ ๊ตฌ์กฐ์ฒด๋ช…์ด๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์ € ํŒจํ‚ค์ง€ ์•„๋ž˜์— ์žˆ์œผ๋ฉด์„œ ๊ตฌ์กฐ์ฒด๋ช… ํŒจํ„ด์ด ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•ด์„œ ๊ฒ€์‚ฌ๋ฅผ ํ•ด์ค€๋‹ค.


exclude ๋ฃฐ์„ ์‚ฌ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธํŒŒ์ผ๋„ ์ œ์™ธํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.


๊ทธ๋Ÿผ ์ด์ œ ๋ญ ๋น ๋œจ๋ฆด๋•Œ๋งˆ๋‹ค


์ž”์†Œ๋ฆฌ๋ฅผ ํ•ด๋Œˆ ๊ฒƒ์ด๋‹ค.



์ฐธ์กฐ
https://golangci-lint.run/usage/linters/#exhaustruct