์๋
ํ์ธ์. ๊ฐ๋ฐ์ ๋ชจ๋๋ฆฌ์
๋๋ค.
The Go Programming Language ๋ผ๋ ์ฑ
์ผ๋ก Go๋ฅผ ๊ณต๋ถํ๊ณ ์์ผ๋ฉฐ, ํด๋น ์ฑ
์ ๋ด์ฉ์ ์์ฝ ์ ๋ฆฌํด์ ์ฌ๋ฆฌ๋ ค๊ณ ํฉ๋๋ค. ์ ๋ ๋ฒ์ญ๋ณธ์ ๊ตฌ๋งคํด์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค.
Go ๊ฐ๋ฐ์ ์ํ ํ๊ฒฝ ๊ตฌ์ถ์ ์ง๋ ๊ฒ์๋ฌผ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์ :)
go๋ก ์์ํ๋ ๋ช
๋ น์ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค.package main
import "fmt"
func main() {
fmt.Println("Hello, ์ธ๊ณ")
}
์์ ์ฝ๋ [ch1/helloworld.go]
go run : .go ๋ก ๋๋๋ ํ ๊ฐ ์ด์์ ์์ค ํ์ผ์ ์ปดํ์ผ ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งํฌํ ํ ๊ฒฐ๊ณผ ์คํ ํ์ผ์ ๊ตฌ๋ํฉ๋๋ค.
์์ ์ฝ๋ [ch1/helloworld.go]์ helloworld.go๋ก ์ ์ฅํ๊ณ ์ฝ์ ๋ช
๋ น์ฐฝ์์ go run helloworld.go ๋ช
๋ น์ ์คํํ๋ฉด ์๋์ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
Hello, ์ธ๊ณ
Go๋ ์ ๋์ฝ๋๋ฅผ ์ง์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ ์ธ๊ณ ์ธ์ด๋ก ์์ฑ๋ ํ ์คํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
go run์ ์ฃผ๋ก ํ
์คํธ๋ฅผ ์ํด ์ฌ์ฉํ๊ณ , ์ผํ์ฑ์ด ์๋๋ผ ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ฌ ์ฌ์ฉํ๋ ค๋ฉด go build ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค.
go build helloworld.go ๋ช
๋ น์ ์คํํ๋ฉด ์์ค ํ์ผ์ด ์ ์ฅ ๋ ์์น์ helloworld ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
./helloworld ๋ช
๋ น์ผ๋ก ํด๋น ํ์ผ์ ์คํ ์ํค๋ฉด ์ ์ ๋์ผํ ์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค.
package main // 1. package ์ ์
import "fmt" // 2. ํจํค์ง import
// 3. ํจ์ ์ ์ธ, ์ ์
func main() {
fmt.Println("Hello, ์ธ๊ณ")
}
๋ฌธ์ฅ์ด ํ ์ค์ ๋ ๊ฐ ์ด์ ๋์ค๋ ๊ฒฝ์ฐ ์ธ์๋ ๋ฌธ์ฅ์ด๋ ์ ์ธ์ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ์๊ตฌํ์ง ์์ต๋๋ค.
ํน์ ํ ํฐ ๋ค์ ๊ฐํ๋ฌธ์๊ฐ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋ณํ๋๋ฏ๋ก ๊ฐํ๋ฌธ์์ ์์น๋ Go ์ฝ๋์ ์ ์ ํ ํด์์ ์ํฅ์ ์ค๋๋ค.
func main()
{
fmt.Println("Hello, ์ธ๊ณ")
}
./helloworld.go:5:6: missing function body
./helloworld.go:6:1: syntax error: unexpected semicolon or newline before {
ํํ์ x + y์์ ๊ฐํ๋ฌธ์๋ +์ ์์ด ์๋ ๋ค์๋ง ํ์ฉ๋ฉ๋๋ค.
func main() {
var result int
result = 1 + 2
fmt.Println(result)
}
func main() {
var result int
result = 1 +
2
fmt.Println(result)
}
func main() {
var result int
result = 1
+2
fmt.Println(result)
}
ch1/helloworld.go:8:2: +2 evaluated but not used
Go๋ ์ฝ๋ ์์์ ๊ฐ๊ฒฝํ ์ ์ฅ์ ์ทจํฉ๋๋ค.
gofmt ๋๊ตฌ๋ ์ฝ๋๋ฅผ ํ์ค ํ์์ผ๋ก ์ฌ์์ฑํ๊ณ , go ๋๊ตฌ์ fmt ๋ถ์ ๋ช ๋ น์ ์ง์ ๋ ํจํค์ง ๋ด์ ๋ชจ๋ ํ์ผ์ด๋ ๊ธฐ๋ณธ ๊ฐ์ผ๋ก ํ์ฌ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ gofmt๋ฅผ ์ ์ฉํฉ๋๋ค.
goimports ๋๊ตฌ๋ import ํ์ง๋ง ์ฌ์ฉํ์ง ์๋ ํจํค์ง๋ฅผ ์ญ์ ํ๊ธฐ๋ ํ๊ณ , import ํ์ง ์๊ณ ์ฌ์ฉํ ํจํค์ง๋ฅผ ์ถ๊ฐํด ์ฃผ๊ธฐ๋ ํฉ๋๋ค.
Atom์ go-plus ํ๋ฌ๊ทธ์ธ์ ์ค์นํ ๊ฒฝ์ฐ ์๋์ผ๋ก gofmt, goimports๊ฐ ์ ์ฉ๋ฉ๋๋ค.
๋ด์ฉ์ด ์์ธํ๊ฒ ๋์ ์๋ ํธ์ด๋ผ์, ์๋ธ ์ฑํฐ ๋ณ๋ก ๋๋ ์ ์ฌ๋ฆฌ๋ ค ํ๋๋ฐ ๋ด์ฉ์ด ๋๋ฌด ์งง๊ฑฐ๋ ์ค๋ช ์ด ๋ง์ด ํ์ ์๋ ๊ฒฝ์ฐ์๋ ์ฌ๋ฌ ์ฑํฐ๋ฅผ ํฉ์ณ์ ์ฌ๋ฆด๊น๋ ์๊ฐ ์ค์ ๋๋ค. ์ด๋ฒ์... ๊ฒ์ผ๋ฅด์ง ์๊ฒ ๊พธ์คํ ์ฌ๋ ค๋ณผ๊ฒ์. ๊ฐ์ฌํฉ๋๋ค.