Go Tour
ํจํค์ง
๊ณ ๋ญ(Go Lang)์ผ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ํจํค์ง๋ก ๊ตฌ์ฑ๋์ด์์ผ๋ฉฐ, ํจํค์ง๋ช
์ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก์ ๋ง์ง๋ง๊ป ์ฌ์ฉํ๋ค.
e.g) path/filepath ์ผ ๊ฒฝ์ฐ ํจํค์ง๋ช
์ filepath ์ด๋ค.
ํจํค์ง ์ํฌํธ
โข
ํจํค์ง ์ํฌํธ๋ ์๊ดํธ๋ก ๊ฐ๊ฑฐ๋, import ๋ฌธ์ฅ์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ ์ ์๋ค
import (
"fmt"
"math"
)
Go
๋ณต์ฌ
import "fmt"
import "math"
Go
๋ณต์ฌ
ํจํค์ง ์ต์คํฌํธ
โข
ํจํค์ง๋ฅผ ์ํฌํธํ๋ฉด ํจํค์ง ๋ด์์ ์ต์คํฌํธ ํ ๋ฉ์๋, ์์๋ฑ์ ์ ๊ทผํ ์ ์๋ค.
โข
๋ณ์๋ช
, ํจ์๋ช
์ ์ฒซ๊ธ์๊ฐ ๋๋ฌธ์๋ก ์์ํ๋ฉด ์ธ๋ถ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋ค.
- Foo (o)
- FOO (o)
- foo (x)
Plain Text
๋ณต์ฌ
ํจ์
โข
C, C++, Java์ ๋ค๋ฅด๊ฒ ๋งค๊ฐ๋ณ์๋ฅผ ์ค๋ฅธ์ชฝ์ ๋ช
์ํด์ค๋ค.
โฆ
์ค๋ฅธ์ชฝ์ ๋ช
์ํ๋ ์ด์ ๋ฅผ ๊ฐ๋จํ ์ค๋ช
ํ์๋ฉด, ์ฝ๋๋ฅผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ฝ๊ธฐ ์ํด์๋ผ๊ณ ํ๋ค.
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(1,2))
}
Go
๋ณต์ฌ
โข
๋งค๊ฐ๋ณ์์ ํ์
์ด ๊ฐ์๊ฒฝ์ฐ, ๋ง์ง๋ง ๋งค๊ฐ๋ณ์์ ํ์
๋ง ๋ช
์ํ๊ณ ๋๋จธ์ง๋ ์๋ต์ด ๊ฐ๋ฅํ๋ค
func add (x, y int) int {
return x + y
}
Go
๋ณต์ฌ
โข
ํจ์๋ด์ ์ฌ๋ฌ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์๋ค
func swap(x, y String) (String, String) {
return y, x
}
Go
๋ณต์ฌ
โข
๋ฐํ๊ฐ์ ์ด๋ฆ์ ๋ช
์ํด๋ ๊ฒฝ์ฐ ๋ณ์์ฒ๋ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ฐํ๊ฐ์ ์ง์ ํ์ง return ๋ฌธ์ ์๋์ผ๋ก ์ฒ๋ฆฌ๋๋ค
func division (sum int) (result int) {
result = sum / 2
return
}
Go
๋ณต์ฌ
๋ณ์
โข
๋ณ์๋ var ํค์๋๋ฅผ ์ฌ์ฉํ๋ค
โข
ํจ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ด ๋ณ์๋ช
๋ค์ ํ์
์ ๋ช
์ํ๋ค
โข
๊ฐ์ ์ด๊ธฐํ ํ ๊ฒฝ์ฐ ์ด๊ธฐํ ํ ๊ฐ์ ํ์
์ด ์๋์ผ๋ก ๊ฒฐ์ ๋๋ค
var x, y, z int
var python, java, node = true, false, true
Go
๋ณต์ฌ
โข
ํจ์ ๋ด์์ ๋ณ์ ์ ์ธ์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
func main () {
x, y, z := 1, 2, 3
}
Go
๋ณต์ฌ
โข
์์๋ const ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, (๋ฌธ์์ด, Bool, ์ซ์) ํ์
๋ง ์ ์ธํ ์ ์๋ค
โข
์ํฌํธ์ฒ๋ผ ์๊ดํธ๋ก ๋ฌถ์ด์ ์ฌ์ฉํ ์ ์๋ค
import "fmt"
const Pi = 3.14
const (
Big = 1 << 100
Small = Big >> 99
)
func main () {
fmt.Println(Pi)
}
Go
๋ณต์ฌ
๋ฐ๋ณต๋ฌธ
โข
Go์์๋ ๋ฐ๋ณต๋ฌธ์ for ๋ง ์ฌ์ฉํ๋ค.
โข
์ฌ์ฉ๋ฒ์ C, Java ์ ์ ์ฌํ๋ฉฐ, ์๊ดํธ๋ ์๋ตํ๋ค
import "fmt"
func main () {
sum := 0
for i := 1; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
Go
๋ณต์ฌ
โข
์กฐ๊ฑด๋ถ๋ง ์ฌ์ฉํ ์ ์๋ค ( While๋ฌธ )
import "fmt"
func main () {
sum := 0
for sum < 100 {
sum += 5
}
fmt.Println(sum)
}
Go
๋ณต์ฌ
โข
์กฐ๊ฑด๋ถ๋ ์๋ตํ๋ฉด ๋ฌดํ๋ฃจํ๊ฐ ๋๋ค
import "fmt"
func main () {
for {
fmt.Println("์ผ์
! ๋ฌดํ๋ฃจํ๋ค")
}
}
Go
๋ณต์ฌ
์กฐ๊ฑด๋ฌธ
โข
์กฐ๊ฑด๋ฌธ์ C, Java ์ ์ ์ฌํ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ฐ๋ณต๋ฌธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ดํธ๋ ์๋ตํ๋ค
import "fmt"
func odd (num int) bool {
if num / 2 == 1 {
return true
} else {
return false
}
}
func main () {
fmt.Println(odd(3))
}
Go
๋ณต์ฌ
โข
์กฐ๊ฑด๋ฌธ ์์ ๋ณ์๋ฅผ ์ ์ธํ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์ ์ ์ธ๋ ๋ณ์๋ if, else ๋ฌธ ๋ด์ ์ค์ฝํ์์๋ง ์ ํจํ๋ค
import "fmt"
func odd (num int) bool {
if b := num / 2; b == 1 {
return true
}
// Undefined: b
// fmt.Println(b)
return false
}
func main () {
fmt.Println(odd(3))
}
Go
๋ณต์ฌ
ํ์
๊ธฐ๋ณธ ์๋ฃํ์ ์๋์ ๊ฐ๋ค
โข
bool
โข
string
โข
int
โฆ
int, int8 int16 int32 int64
โฆ
uint uint8 uint16 uint32 uint64 uintptr
โข
byte (uint8 alias)
โข
rune (int32 alias)
โข
float
โฆ
float32 float64
โข
complex
โฆ
complex64 compl128
๊ตฌ์กฐ์ฒด
struct ํค์๋๋ฅผ ํตํด ๊ตฌ์กฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ, type ์ ์ธ์ผ๋ก ๊ตฌ์กฐ์ฒด์ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ค
import "fmt"
type User struct {
name string
age int
}
func main () {
user := User{"์๋๋ช
", 21}
fmt.Println(user.name)
}
Go
๋ณต์ฌ
ํฌ์ธํฐ
โข
ํฌ์ธํฐ๋ ์์ง๋ง, ํฌ์ธํธ ์ฐ์ฐ์ ๋ถ๊ฐ๋ฅํ๋ค
โข
๊ตฌ์กฐ์ฒด๋ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ค์ ๊ตฌ์กฐ์ฒด์ ์ง์ ์ ์ธ ์ํฅ์ ๋ผ์น๋ค
import "fmt"
type User struct {
name string
age int
}
func main () {
user := User{"์๋๋ช
", 21}
p := &user
p.name = "๋๊ตฐ์ง ๋ชจ๋ฅด๊ฒ ์ด"
fmt.Println(user.name)
fmt.Println(p.name)
}
Go
๋ณต์ฌ
โข
๊ตฌ์กฐ์ฒด ๋ฆฌํฐ๋ด
โฆ
{key: value} ํํ๋ก ๊ฐ์ ์ค์ ํ ์ ์๋ค (์์๋ ์๊ด์๋ค)
โฆ
& ํค์๋๋ฅผ ํตํด ๊ตฌ์กฐ์ฒด ๋ฆฌํฐ๋ด ํฌ์ธํฐ๋ฅผ ์์ฑํ ์ ์๋ค
import "fmt"
type User struct {
name string
age int
}
func main () {
user := User{"์๋๋ช
", 21}
user1 := User{name: "๋๊ตด๊น"}
user2 := &User{age: 21}
fmt.Println(user.name)
fmt.Println(user1.name)
fmt.Println(user)
fmt.Println(user1)
fmt.Println(user2)
}
Go
๋ณต์ฌ
new ํจ์
โข
new(T) ๋ ๋ชจ๋ ๊ฐ์ด 0 (Zero Value) ๋ก ํ ๋น๋ ํ์
์ ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ค
โฆ
์ซ์ ํ์
์ 0, ์ฐธ์กฐ ํ์
์ nill
import "fmt"
type User struct {
name string
age int
}
func main () {
user := new(User)
fmt.Println(user)
user.name = "์๋๋ช
"
fmt.Println(user)
}
Go
๋ณต์ฌ



