Go 1.16 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ถ์๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ด ์ธ์ด๋ ์ปดํ์ผ๋ ์ธ์ด์ ๊ณ ์ฑ๋ฅ๊ณผ ์ฝ๋ ์์ฑ ์ฉ์ด์ฑ ๋ฑ ์คํฌ๋ฆฝํ ์ธ์ด์ ์ฅ์ ์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ์๋ฃจ์ ์ผ๋ก Google์ด ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌ๋ฅผ ํตํด ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. , ๊ฐ๋ฐ ์๋ ๋ฐ ์ค๋ฅ ๋ฐฉ์ง. ํ๋ก์ ํธ ์ฝ๋๋ BSD ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
Go์ ๊ตฌ๋ฌธ์ Python ์ธ์ด์์ ์ผ๋ถ ์ฐจ์ฉํ C ์ธ์ด์ ์น์ํ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ธ์ด๋ ๋งค์ฐ ๊ฐ๊ฒฐํ์ง๋ง ์ฝ๋๋ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค. Go ์ฝ๋๋ ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํ์ง ์๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋๋ ๋ ๋ฆฝํ ๋ฐ์ด๋๋ฆฌ ์คํ ํ์ผ๋ก ์ปดํ์ผ๋์ด(ํ๋กํ์ผ๋ง, ๋๋ฒ๊น ๋ชจ๋ ๋ฐ ๊ธฐํ ๋ฐํ์ ๋ฌธ์ ๊ฐ์ง ํ์ ์์คํ ์ด ๋ฐํ์ ๊ตฌ์ฑ ์์๋ก ํตํฉ๋จ) C ํ๋ก๊ทธ๋จ๊ณผ ๋น์ทํ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ์ฒ์์๋ ๋ณ๋ ฌ ์ปดํจํ ์ ๊ตฌ์ฑํ๊ณ ๋ณ๋ ฌ ์คํ ๋ฐฉ๋ฒ ๊ฐ์ ์ํธ ์์ฉ์ ์ํ ์ด์์ ์์ค ์๋จ์ ์ ๊ณตํ๋ ๊ฒ์ ํฌํจํ์ฌ ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฉํฐ ์ฝ์ด ์์คํ ์ ํจ์จ์ ์ธ ์๋์ ์ด์ ์ ๋ง์ถฐ ๊ฐ๋ฐ๋์์ต๋๋ค. ๋ํ ์ด ์ธ์ด๋ ๊ณผ๋ํ๊ฒ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ๋ํ ๊ธฐ๋ณธ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Go 1.16์ ๋์ ๋ ์ฃผ์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- embed ํจํค์ง๊ฐ ์ถ๊ฐ๋์ด ์์์ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋จ์ ์๋ฒ ๋ํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ปดํ์ผ ๋จ๊ณ์์ ์๋ฒ ๋ํด์ผ ํ๋ ํ์ผ์ ์ง์ ํ๋ ์๋ก์ด ์ง์์ด "//go:embed"๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฝ๋์ "//go:embed test.txt" ์ฃผ์์ ์ง์ ํ๊ณ ๊ทธ ๋ค์ "var f embed.FS" ๋ณ์๋ฅผ ์ ์ธํ๋ฉด test.txt ํ์ผ์ด ์๋ฒ ๋๋๊ณ ์ค๋ช ์ "f"๋ฅผ ํตํด ์ก์ธ์คํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ํน์ ์ ํ์ ๋ฆฌ์์ค ๋๋ ๊ฐ๋ณ ๊ฐ์ ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ํ์ผ์ ์๋ฒ ๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, version.txt ํ์ผ์์ ๋ฌธ์์ด ๋ณ์ "s"๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ ์ ์์ต๋๋ค. import _ "embed" //go:embed version.txt var s string print(s)
- ํตํฉ ๋ฒ์ ๊ด๋ฆฌ ์ง์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์๋ก์ด ๋ชจ๋ ์์คํ ์ด ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์์ด๋ฉฐ, GOPATH ๊ธฐ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ๋์ฒดํฉ๋๋ค. GO111MODULE ํ๊ฒฝ ๋ณ์๋ ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก "on"์ผ๋ก ์ค์ ๋๋ฉฐ, ์์ ๋๋ ํฐ๋ฆฌ๋ ์์ ๋๋ ํฐ๋ฆฌ์ go.mod ํ์ผ์ด ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ชจ๋ ๋ชจ๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ก์ด ๋ชจ๋์์ "go build" ๋ฐ "go test"์ ๊ฐ์ ๋น๋ ๋ช ๋ น์ go.mod ๋ฐ go.sum์ ๋ด์ฉ์ ์์ ํ์ง ์์ผ๋ฉฐ, "go install" ๋ช ๋ น์ ๋ฒ์ ๋ณ ์ธ์("go install example.com/cmd@v1.0.0")๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด์ ๋์์ผ๋ก ๋์๊ฐ๋ ค๋ฉด GO111MODULE์ "auto"๋ก ๋ณ๊ฒฝํ์ญ์์ค. ๊ฐ๋ฐ์์ 96%๊ฐ ์ด๋ฏธ ์๋ก์ด ๋ชจ๋ ์์คํ ์ผ๋ก ์ ํํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
- ๋ง์ปค๊ฐ ์ต์ ํ๋์์ต๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ๋งํน ์๋๊ฐ 20~25% ๋นจ๋ผ์ง๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด 5~15% ๊ฐ์ํ์ต๋๋ค.
- ์ด์ ์ปดํ์ผ๋ฌ๋ ๋ฃจํ, ๋ฉ์๋ ๊ฐ, '์ ํ ์ค์์น' ๊ตฌ์กฐ์ ๋ํ ๋จ์ถํ์ ์ฌ์ฉํ์ฌ ์ธ๋ผ์ธ ํจ์ ํ์ฅ์ ์ง์ํฉ๋๋ค.
- ์๋ก์ด Apple M1 ARM ์นฉ์ด ์ฅ์ฐฉ๋ Apple ์์คํ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. 64๋นํธ ARM ์์คํ ์์ NetBSD๋ฅผ ์ง์ํ๊ณ MIPS64 ์์คํ ์์ OpenBSD๋ฅผ ์ง์ํ๋ netbsd/arm64 ๋ฐ openbsd/mips64 ํฌํธ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. linux/riscv64 ํฌํธ์ cgo ๋ฐ "-buildmode=pie" ๋ชจ๋ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- x87 ์ปดํ์ผ ๋ชจ๋(GO386=387) ์ง์์ด ์ค๋จ๋์์ต๋๋ค. SSE2 ๋ช ๋ น์ด๊ฐ ์๋ ํ๋ก์ธ์์ ๋ํ ์ง์์ ์ด์ ์ํํธ์จ์ด ๋ชจ๋ "GO386=softfloat"๋ฅผ ํตํด ์ ๊ณต๋ฉ๋๋ค.
๋ํ, Dart 2.12 ์ธ์ด ๋ฒ ํ ๋ฆด๋ฆฌ์ค ํ
์คํธ๊ฐ ์์๋์์์ ์ ์ ์์ต๋๋ค. ์ด ๋ฆด๋ฆฌ์ค์์๋ ๊ฐ์ด ์ ์๋์ง ์๊ณ Null๋ก ์ค์ ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ์ฌ ๋ฐ์ํ๋ ์ถฉ๋์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋๋ Null ์์ ๋ชจ๋๊ฐ ์์ ํ๋์์ต๋๋ค. ์ด ๋ชจ๋๋ ๋ณ์์ ๋ช
์์ ์ผ๋ก Null ๊ฐ์ ํ ๋นํ์ง ์๋ ํ ๋ณ์๊ฐ ์ ์๋์ง ์์ ๊ฐ์ ๊ฐ์ง ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด ๋ชจ๋๋ ๋ณ์์ ํ์
์ ์๊ฒฉํ๊ฒ ๊ณ ๋ คํ๋ฏ๋ก ์ปดํ์ผ๋ฌ๊ฐ ์ถ๊ฐ์ ์ธ ์ต์ ํ๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ํ์
์ค์ ์ฌ๋ถ๋ ์ปดํ์ผ ํ์์ ๊ฒ์ฌ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, int์ ๊ฐ์ด ์ ์๋์ง ์์ ์ํ๋ฅผ ์๋ฏธํ์ง ์๋ ํ์
์ ๋ณ์์ Null ๊ฐ์ ํ ๋นํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ถ์ฒ : opennet.ru
