728x90
Go ์ธ์ด: ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
1. Go ์ธ์ด๋?
Go ์ธ์ด๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ ์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, 2007๋ ์ ๋ฐํ๋์์ต๋๋ค. Go ์ธ์ด๋ C์ ์ ๋์ค ๊ณ์ด์ ์ธ์ด์์ ์ํฅ์ ๋ฐ์์ผ๋ฉฐ, ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋ ฅํ ๋์์ฑ ๋ฐ ๋ณํ์ฑ์ ๊ฐ์ถ ์ธ์ด๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค.
2. Go ์ธ์ด์ ์ญ์ฌ
Go ์ธ์ด๋ Robert Griesemer, Rob Pike, Ken Thompson์ด ๊ฐ๋ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ์ด๊ธฐ์๋ C์ C++์ ์ฅ์ ์ ๊ฒฐํฉํ๋ฉด์๋ ๋ณต์ก์ฑ์ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. 2009๋ 3์์ ๊ณต์์ ์ผ๋ก ๋ฐํ๋ ํ, ์ง์์ ์ธ ๋ฐ์ ์ ๊ฑฐ๋ญํด์์ต๋๋ค.
3. Go ์ธ์ด์ ์ญํ
- ์์คํ ํ๋ก๊ทธ๋๋ฐ: Go ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ฑ๋ฅ์ ๋ฐ์ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์์คํ ํ๋ก๊ทธ๋๋ฐ์ ์ ํฉํฉ๋๋ค. ํนํ, ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์์คํ ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ์น ์๋ฒ ๊ฐ๋ฐ: Go ์ธ์ด๋ ๊ฐ๋ฒผ์ด ๋ฌธ๋ฒ๊ณผ ๋น ๋ฅธ ์๋๋ก ์น ์๋ฒ๋ฅผ ๊ฐ๋ฐํ ์ ์์ด ์ธ๊ธฐ๋ฅผ ๋๊ณ ์์ต๋๋ค. ํนํ, HTTP ์๋ฒ ๊ฐ๋ฐ์ ์ ํฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ถ์ฐ ์์คํ : Go ์ธ์ด๋ ๊ฐ๋ ฅํ ๋์์ฑ ๋ฐ ๋ณํ์ฑ์ ์ง์ํ์ฌ ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์ ๊ฐ๋ฐ์ ์ ํฉํฉ๋๋ค. ๋ํ, ๊ฒฝ๋ํ๋ ์ค๋ ๋ ๋ชจ๋ธ์ ํตํด ํจ์จ์ ์ธ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
4. Go ์ธ์ด์ ์ฅ๋จ์
์ฅ์ :
- ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ: Go ์ธ์ด๋ C์ ์ ๋์ค ๊ณ์ด ์ธ์ด์ ๋ฌธ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด์๋ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ์ ๊ณตํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ ๋๋ค.
- ํจ์จ์ ์ธ ๋์์ฑ ์ฒ๋ฆฌ: Go ์ธ์ด๋ ๊ณ ๋ฃจํด๊ณผ ์ฑ๋์ ํตํ ๋์์ฑ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ ฅํ์ฌ ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ด ์ฉ์ดํฉ๋๋ค.
- ํ๋ถํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ: Go ์ธ์ด๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ถํ์ฌ ๋ค์ํ ๊ฐ๋ฐ ์์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋จ์ :
- ์ฑ์๋ ๋ถ์กฑ: ๋ค๋ฅธ ์ธ์ด์ ๋นํด Go ์ธ์ด๋ ์๋์ ์ผ๋ก ์ฑ์๋๊ฐ ๋ฎ์ ์์ง๊น์ง๋ ์๋ก์ด ๊ธฐ์ ์ด๋ ํจํด์ด ๋ง์ด ์์ต๋๋ค.
- ์ํ๊ณ์ ํ๊ณ: Go ์ธ์ด๋ ๋ค๋ฅธ ์ธ์ด์ ๋นํด ์ํ๊ณ๊ฐ ์์์ ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๋ฅผ ์ฐพ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
5. Go ์ธ์ด๋ฅผ ์ดํดํ๋ ์์ ์ฝ๋
Hello, World!
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
๊ณ ๋ฃจํด์ ์ด์ฉํ ๋์์ฑ ์ฒ๋ฆฌ
package main
import (
"fmt"
"time"
)
func main() {
go task1()
go task2()
time.Sleep(time.Second)
}
func task1() {
for i := 0; i < 5; i++ {
fmt.Println("Task 1 -", i)
time.Sleep(time.Millisecond * 500)
}
}
func task2() {
for i := 0; i < 5; i++ {
fmt.Println("Task 2 -", i)
time.Sleep(time.Millisecond * 500)
}
}
6. ์ฐ๊ด๋ ๊ธฐ์
- gRPC (Google Remote Procedure Call): Go ์ธ์ด์์ ๊ฐ๋ฐ๋ ๋น ๋ฅธ RPC ํ๋ ์์ํฌ๋ก, ๋ถ์ฐ ์์คํ ๊ณผ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- Docker: Go ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ํํ์ฌ ๋ฐฐํฌํ ๋ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. Docker์ ์ปจํ ์ด๋๋ Go ์ธ์ด์์ ํธํ์ฑ์ด ๋ฐ์ด๋๋ฏ๋ก ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋๊ธ