Blog

Go Tour-1

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
๋ณต์‚ฌ