Go์์ ์ค๋ฅ ์ฒ๋ฆฌ
Go ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ค๋ฅ ์ฒ๋ฆฌ์ ๋ํด ์์ธํ ์์๋ณด๊ณ ๊ฐ๋ ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ธฐ์ ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ณด์ธ์. AppMaster์์ ์์ฑํ Golang ์ฝ๋์ ์ค๋ฅ ์ฒ๋ฆฌ ์ํ ๋ฐ ์ฒ๋ฆฌ ์ค๋ฅ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.

์ค๋ฅ ์ฒ๋ฆฌ์ ์ค์์ฑ ์ดํด
์ค๋ฅ ์ฒ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ์์ธกํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ฏ๋ก ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์ ์ด๊ณ ์ฌ์ฉ์ ์นํ์ ์์ ๋ณด์ฅํฉ๋๋ค. Go ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ค๋ฅ ์ฒ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ ๋ถ๋ถ์ ๋๋ค. Go๋ ๊ฐ๋จํ๊ณ ์ต์ํ์ ์ค๋ฅ ์ฒ๋ฆฌ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ค๋ฅ๋ฅผ ๋ช ์์ ์ด๊ณ ๋ถ์ง๋ฐํ ์ฒ๋ฆฌํ๋๋ก ์ฅ๋ คํ์ฌ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ๋์ ๋๋ค. Go์์ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ๊ฐ ์์ต๋๋ค.
- ํฅ์๋ ์ฝ๋ ์์ ์ฑ: ์ค๋ฅ๋ฅผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ค์ํ ์ค๋ฅ ๋ชจ๋๋ฅผ ์์ํ๊ณ ์๊ธฐ์น ์์ ์ํฉ์ ์ง๋ฉดํ์ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์์ ์ผ๋ก ์๋ํ๋๋ก ํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ: ๋ช ์์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ์ค๋ฅ ์กฐ๊ฑด์ ์ฒด๊ณ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ฝ๊ณ , ์ดํดํ๊ณ , ์์ ํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ ์ฌ์ฉ์์๊ฒ ๋ฌธ์ ๋ฐ ๊ฐ๋ฅํ ๋ค์ ๋จ๊ณ์ ๋ํด ์๋ ค์ฃผ๋ ์ ์ตํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ์ฌ ์ต์ข ์ฌ์ฉ์์๊ฒ ๋ ๋์ ์ ๋ฐ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์์์น ๋ชปํ ์ํฉ์ ๋ํ ๋๋น: ์์์น ๋ชปํ ์ค๋ฅ๊ฐ ์ ๋๋ก ์ฒ๋ฆฌ๋์ง ์์ผ๋ฉด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ถฉ๋์ด๋ ์๊ธฐ์น ์์ ๋์์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ค๋ฅ ์ฒ๋ฆฌ ๊ธฐ์ ์ ์ด๋ฌํ ์ํฉ์ ์๋ณํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ด๊ตฌ์ฑ์ด ํฅ์๋ฉ๋๋ค.

Go์ ๊ธฐ๋ณธ ์ค๋ฅ ์ฒ๋ฆฌ
Go์์ ์ค๋ฅ ์ฒ๋ฆฌ๋ error ์ธํฐํ์ด์ค๋ฅผ ์ค์ฌ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ค๋ฅ ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
์ ํ ์ค๋ฅ ์ธํฐํ์ด์ค {
์ค๋ฅ() ๋ฌธ์์ด
}
Error() ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๋ชจ๋ ํ์์ error ์ธํฐํ์ด์ค์ ๊ตฌํ์ผ๋ก ๊ฐ์ฃผํ ์ ์์ต๋๋ค. Go์ ๊ธฐ๋ณธ ์ค๋ฅ ์ฒ๋ฆฌ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋จ๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค.
- ํจ์์์ ์ค๋ฅ ๋ฐํ: Go์์ ์ค๋ฅ๋ฅผ ์์ฑํ ์ ์๋ ํจ์๋
error๊ฐ์ฒด๋ฅผ ๋ ๋ฒ์งธ ๋ฐํ ๊ฐ์ผ๋ก ๋ฐํํด์ผ ํฉ๋๋ค(์ฒซ ๋ฒ์งธ ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๊ณต์ ์ธ ๋ฐํ ๊ฐ์ ๋๋ค). - ๋ฐํ๋ ์ค๋ฅ ํ์ธ: ์ค๋ฅ๋ฅผ ๋ฐํํ ์ ์๋ ํจ์๋ฅผ ํธ์ถํ ๋ ๋ฐํ๋ ์ค๋ฅ์
nil๋๋nil์ด ์๋ ๊ฐ์ด ์๋์ง ํ์ธํฉ๋๋ค.nil์ด ์๋ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ ๋ํ๋ ๋๋ค. - ์ค๋ฅ ์ฒ๋ฆฌ: ์ค๋ฅ๊ฐ ๋ฐํ๋๋ฉด ๊ธฐ๋กํ๊ฑฐ๋ ํธ์ถ์์๊ฒ ๋ฐํํ๊ฑฐ๋ ์ฌ์ฉ์์๊ฒ ๊ด๋ จ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค์ผ๋ก์จ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
๋ค์์ Go์ ๊ธฐ๋ณธ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ ๋๋ค.
ํจํค์ง ๋ฉ์ธ
๊ฐ์ ธ์ค๊ธฐ(
"fmt"
"strconv"
)
ํจ์ ๋ฉ์ธ() {
numStr := "123"
numInt, ์ค๋ฅ := strconv.Atoi(numStr)
์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ != nil {
fmt.Println("์ค๋ฅ ๋ฐ์:", ์ค๋ฅ)
๋ฐํ
}
fmt.Println("๋ณํ๋ ์ซ์:", numInt)
}
์ด ์์์ strconv.Atoi() ํจ์๋ int ๊ฐ๊ณผ error ๋ฐํํฉ๋๋ค. ํจ์๊ฐ ํธ์ถ๋ ํ ์ค๋ฅ๊ฐ nil ์๋ ๊ฐ์ธ์ง ํ์ธํฉ๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ธ์๋๊ณ ํ๋ก๊ทธ๋จ์ด ๋ฐํ๋ฉ๋๋ค.
Go์ ์ค๋ฅ ๋ํ ๊ธฐ์
์ค๋ฅ ๋ํ์ ๊ฐ๋ฐ์๊ฐ ์๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ณด์กดํ๋ฉด์ ์ค๋ฅ์ ์ปจํ
์คํธ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ธฐ์ ์
๋๋ค. ์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ๋ ์ ์ดํดํ๊ณ ๋๋ฒ๊น
ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Go 1.13์์๋ fmt.Errorf() ํจ์๋ฅผ ํตํด ์ค๋ฅ๋ฅผ ๋ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ ๋์ฌ %w ์ฌ์ฉํ์ฌ ์ค๋ฅ ๋ํ์ ๋์
ํ์ต๋๋ค. ์ค๋ฅ๋ฅผ ๋ํํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ปจํ
์คํธ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ์ค๋ช
๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์์ Go์์ ์ค๋ฅ ๋ํ์ ์์
๋๋ค.
ํจํค์ง ๋ฉ์ธ
๊ฐ์ ธ์ค๊ธฐ(
"์ค๋ฅ"
"fmt"
"os"
)
ํจ์ ๋ฉ์ธ() {
์ค๋ฅ := openFile("non_existent.txt")
์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ != nil {
fmt.Println("์ค๋ฅ ๋ฐ์:", ์ค๋ฅ)
}
}
func openFile(ํ์ผ๋ช
๋ฌธ์์ด) ์ค๋ฅ {
_, ์ค๋ฅ := os.Open(ํ์ผ๋ช
)
์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ != nil {
return fmt.Errorf("%s ํ์ผ ์ด๊ธฐ ์คํจ: %w", ํ์ผ ์ด๋ฆ, ์ค๋ฅ)
}
๋ฐํ ์์
}
์ด ์์ ์์ os.Open() ํจ์๋ ํ์ผ์ด ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ์ค๋ฅ๋ฅผ ์ง์ ๋ฐํํ๋ ๋์ fmt.Errorf() ์ฌ์ฉํ์ฌ ์ถ๊ฐ ์ปจํ
์คํธ๋ก ๋ํ๋ฉ๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ๋๋ฒ๊น
ํ ๋ ์ด ์ถ๊ฐ ์ปจํ
์คํธ๋ ๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ์ ์ ์ํ๊ฒ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์ ์ฝ๋๋ฅผ ์คํํ ๋ ์ถ๋ ฅ์๋ ์ด์ง ๋ชปํ ํน์ ํ์ผ ์ด๋ฆ์ด ํฌํจ๋ฉ๋๋ค.
์ค๋ฅ ๋ฐ์: non_existent.txt ํ์ผ ์ด๊ธฐ ์คํจ: non_existent.txt ์ด๊ธฐ: ํด๋น ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ ์์
Go์์ ์ผ๋ฐ์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ ํจ์
Go์์ ์ค๋ฅ ์ฒ๋ฆฌ ์์ ์ ํ ๋ ๋ถ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ด๋ ค์ด ๋๋ฒ๊น ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์๋ ์ผ๋ฐ์ ์ธ ํจ์ ์ ํผํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ํจ์ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค๋ฅ ๋ฌด์: ์ค๋ฅ ์ฒ๋ฆฌ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ์น๋ช ์ ์ธ ์ค์ ์ค ํ๋๋ ์ค๋ฅ๋ฅผ ์์ ํ ๋ฌด์ํ๋ ๊ฒ์ ๋๋ค. Go ์ฝ๋์์ ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉด ์๊ธฐ์น ์์ ๋์, ๋ฐ์ดํฐ ์์ ๋๋ ๋ ๋์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ํญ์ ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ์ญ์์ค.
panic()๋ฐrecover()๊ณผ๋ํ๊ฒ ์ฌ์ฉ:panic()๋ฐrecover()ํน์ ์ํฉ์์ ์ ์ฉํ ์ ์์ง๋ง ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ ํ์ํ ์ ์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ์ง์ ์ผ๋ก ์์ธ์ ์ธ ์ํฉ์ ์ํด ์ด๋ฌํ ํจ์์ ์ฌ์ฉ์ ์์ฝํ์ญ์์ค.- ๋ถ์์ ํ ์ค๋ฅ ํ์ธ: ๋๋๋ก ๊ฐ๋ฐ์๋ ํน์ ์ค๋ฅ ์ ํ๋ง ํ์ธํ๊ณ ๋ค๋ฅธ ์ ์ฌ์ ์ค๋ฅ๋ ์ฒ๋ฆฌ๋์ง ์์ ์ํ๋ก ๋ก๋๋ค. ๋ช ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ํฌ๊ด ์ ๋ต์ ์ฌ์ฉํ์ฌ ํจ์์์ ๋ฐํ๋ ์ ์๋ ๊ฐ๋ฅํ ๋ชจ๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
- ํ์ค
error์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋ฅด์ง ์์: Go๋ ์ค๋ฅ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ฐํํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์ ๊ณตerror์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ค๋ฅ๋ฅผ ๊ฐ์ผ๋ก ๋ฐํํ์ฌ ์ด ์ธํฐํ์ด์ค๋ฅผ ์ค์ํ๊ณ ํผ๋๊ณผ ๋๋ฒ๊น ์ด๋ ค์์ ์ด๋ํ ์ ์๋ ์ฌ์ฉ์ ์ ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. - ๋ชจํธํ๊ฑฐ๋ ์ผ๋ฐ์ ์ธ ์ค๋ฅ ๋ฉ์์ง ๋ฐํ: ๋ช ํํ๊ณ ์ค๋ช ์ ์ธ ์ค๋ฅ ๋ฉ์์ง๋ ์ฝ๋์ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ๋๋ฒ๊น ํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ค๋ฅ์ ๊ทผ๋ณธ ์์ธ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋๋ ์๋ฏธ ์๋ ์ ๋ณด๋ฅผ ์ค๋ฅ ๋ฉ์์ง์ ํญ์ ์ ๊ณตํ์ญ์์ค.
AppMaster์์ ์์ฑ๋ Golang ์ฝ๋์ ์ค๋ฅ ์ฒ๋ฆฌ
AppMaster ๋ ธ์ฝ๋ ํ๋ซํผ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ ํ ์ค๋ฅ ๊ด๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ฉด์ ์์ฑ๋ Golang ์ฝ๋์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์ค์ํ๊ฒ ์๊ฐํฉ๋๋ค. ์ด๋ AppMaster ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ์์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ํฅ์์ํต๋๋ค. AppMaster์์ ์์ฑ๋ Golang ์ฝ๋์ ์ค๋ฅ ์ฒ๋ฆฌ์ ๋ํ ๋ช ๊ฐ์ง ์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ค ์ค๋ฅ ์ฒ๋ฆฌ ํจํด
AppMaster ๋ด์ฅ๋ error ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ฑ๋ ์ฝ๋ ์ ์ฒด์์ ์ผ๊ด๋๊ฒ ์ค๋ฅ๋ฅผ ํ์ธํ๋ Go์ ํ์ค ์ค๋ฅ ์ฒ๋ฆฌ ํจํด์ ์ค์ํฉ๋๋ค.
์ค๋ฅ ๋ํ
์ปจํ ์คํธ๋ฅผ ์ ์งํ๊ณ ๋๋ฒ๊น ์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด AppMaster์์ ์์ฑ๋ ์ฝ๋๋ ์ ์ ํ ๊ฒฝ์ฐ ์ค๋ฅ ๋ํ์ ์ฌ์ฉํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ๊ฐ๋ฐ์๋ ์ค๋ฅ๋ฅผ ์ด๋ํ ์ผ๋ จ์ ์ด๋ฒคํธ๋ฅผ ๋ ์ ์ดํดํ ์ ์์ต๋๋ค.
์๋ฏธ ์๋ ์ค๋ฅ ๋ฉ์์ง
๋ช ํํ๊ณ ์ค๋ช ์ ์ธ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์์ฑ๋ ์ฝ๋ ์ ์ฒด์ ์ฌ์ฉ๋์ด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ์๋ณํ๊ณ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ค๋ฅ ์ฒ๋ฆฌ ๋ชจ๋ฒ ์ฌ๋ก
AppMaster์์ ์์ฑ๋ Golang ์ฝ๋๋ ์ ์ ํ ์ค๋ฅ ๊ด๋ฆฌ, panic() ๋ฐ recover() ์ฌ์ฉ ์ต์ํ, ํฌ๊ด์ ์ธ ์ค๋ฅ ๊ฒ์ฌ๋ฅผ ํฌํจํ์ฌ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฆ
๋๋ค. ์ด๋ฌํ ์์น์ ๋ฐ๋ผ AppMaster ์์ฑํ๋ Golang ์ฝ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ฌ ๋น์ฆ๋์ค๋ฅผ ์ํ ๊ณ ํ์ง ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ณตํฉ๋๋ค.

Go์์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
Go์์ ์ค๋ฅ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๊ฐ๋ ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋ ค๋ฉด ํ๋ฆฝ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Go์์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ช ๊ฐ์ง ์ฃผ์ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํญ์ ์ค๋ฅ ํ์ธ: Go์์ ์ค๋ฅ ์ฒ๋ฆฌ์ ์ด์์ ๋๋ค. ์ฝ๋์ ๋ชจ๋ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ฒ๋ฆฌํ์ฌ ์๊ธฐ์น ์์ ๋์๊ณผ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ์ญ์์ค.
- ์ค๋ฅ ๋ํ์ ์ฌ์ฉํ์ฌ ์ปจํ ์คํธ ์ ๊ณต: Go 1.13์ ๋์ ๋ ๊ฒ๊ณผ ๊ฐ์ ์ค๋ฅ ๋ํ ๊ธฐ์ ์ ํ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ์ปจํ ์คํธ๋ฅผ ๋ณด์กดํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๋ฒ ์ด์ค์ ๋ฌธ์ ๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค.
- ํ์ค
error์ธํฐํ์ด์ค ์ค์: Go๋ ์ค๋ฅ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ด์ฅ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์ ์ ์ ์ค๋ฅ ์ ํ์ดerror์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์ค๋ฅ๋ฅผ ์ฌ์ฉ์ ์ ์ ๊ตฌ์กฐ ๋์ ๊ฐ์ผ๋ก ๋ฐํํ๋์ง ํ์ธํ์ญ์์ค. - ์ต์ํ์ ๋๋ผ์ ์์น์ ๋ฐ๋ฅด์ญ์์ค. ์ค๋ฅ ์ฒ๋ฆฌ ์ ๋ต์ ์ค๊ณํ ๋ ๊ฐ๋ฅํ ํ ์์ธก ๊ฐ๋ฅํ๊ณ ์ง๊ด์ ์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ญ์์ค. ์ฌ๊ธฐ์๋ ๋ช ํํ ์ค๋ฅ ๋ฉ์์ง ์ฌ์ฉ, ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ค๋ฅ ๋ฐํ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฐ๋ฅธ ์์ค์์ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค.
- ์ ์ ํ ์์ค์์ ์ค๋ฅ ์ฒ๋ฆฌ: ์ค๋ฅ๋ฅผ ๊ธฐ๋กํ๋ , ์์ ์ ๋ค์ ์๋ํ๋ , ์ค๋ฅ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฒ๋ธ๋งํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฐ๋ฅธ ์์ค์์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ ์ฑ ์์ด ์๋ ์ฌ๋ ๋๋ ๋์์ ๊ฒฐ์ ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ค๋ฅ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Go์ ์ค๋ฅ ์ฒ๋ฆฌ์ ๋ํ ์ด๋ฌํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ๋ฉด ์๊ธฐ์น ์์ ๋ฌธ์ ๋ฅผ ๊ฒฌ๋ ์ ์๊ณ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ ์๋ฏธ ์๋ ํผ๋๋ฐฑ์ ์ ๊ณตํ ์ ์๋ ๋ณด๋ค ํ๋ ฅ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ AppMaster ํ๋ซํผ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๊ณผ ๊ฒฐํฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ๊ณผ ์ ๋ฐ์ ์ธ ํ์ง์ด ๋์ฑ ํฅ์๋ฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Go์ ์ค๋ฅ ์ฒ๋ฆฌ๋ Go ํ๋ก๊ทธ๋จ์์ ์ค๋ฅ๋ฅผ ์๋ณ, ์์ธก ๋ฐ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค๋ฅผ ๋งํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ ์ฑ๊ณผ ๊ฒฌ๊ณ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐํ์ ์ค๋ฅ ๊ฐ์ง ๋ฐ ์ค๋ฅ ๋ฉ์์ง์ ์ ์ ํ ๊ด๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค.
Go์์๋ ์ค๋ฅ๋ฅผ ์ค๋ช ํ๋ ๋ฌธ์์ด์ ๋ฐํํ๋ Error() ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๋ error ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์ ์ ํ์ ์ ์ํ์ฌ ์ฌ์ฉ์ ์ง์ ์ค๋ฅ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
Go์์ ์ค๋ฅ ๋ํ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ์งํ๋ฉด์ ์ค๋ฅ์ ์ปจํ ์คํธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ์ค๋ฅ๋ฅผ ๋ ์ ์ดํดํ๊ณ ๋๋ฒ๊น ํ๋ ๋ฐ ๋์์ด ๋๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ์ ๋ ์ฝ๊ฒ ์ถ์ ํ ์ ์์ต๋๋ค.
Go์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ ํจ์ ์๋ ์ค๋ฅ ๋ฌด์, panic() ๋ฐ recover() ๊ณผ๋ ์ฌ์ฉ, ๋ถ์์ ํ ์ค๋ฅ ๊ฒ์ฌ ๋ฐ ํ์ค error ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋ฅด์ง ์๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
AppMaster์์ ์์ฑ๋ Golang ์ฝ๋๋ ๊ฐ๋ ฅํ ์ค๋ฅ ์ฒ๋ฆฌ ์์น์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์์ฑ๋ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ ํ ์ค๋ฅ ๊ด๋ฆฌ๋ฅผ ๋ณด์ฅํ๊ณ Go์ ์ค๋ฅ ์ฒ๋ฆฌ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ํฅ์์ํต๋๋ค.
Go์์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก์๋ ํญ์ ์ค๋ฅ ํ์ธ, ์ค๋ฅ ๋ํ์ ์ฌ์ฉํ์ฌ ์ปจํ ์คํธ ์ ๊ณต, ํ์ค error ์ธํฐํ์ด์ค ์ค์, ์ต์ํ์ ๋๋ผ์ ์์น ์ค์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ ํ ์์ค์์ ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค.


