• 1.2 GO ์ž‘์—… ๊ณต๊ฐ„

  • 1.3 GO ๋ช…๋ น์–ด

  • 1.4 ๋ฆฐํŒ… ๊ทธ๋ฆฌ๊ณ  ๋ฒ ํŒ…

  • 1.5 ๊ฐœ๋ฐœ ๋„๊ตฌ ์†Œ๊ฐœ

  • 1.6 Makefiles

  • 1.7 ํ•ญ์ƒ ์ตœ์‹ ์œผ๋กœ ์œ ์ง€

  • 1.8 ๋งˆ๋ฌด๋ฆฌ

  • CHAPTER 2 ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์„ ์–ธ

    • 2.1 ๋‚ด์žฅ ํƒ€์ž…
    • 2.2 var Versus :=
      • ์ œ๋กœ๊ฐ’ ์ดˆ๊ธฐํ™” ํ• ๋•Œ๋Š” var x int๊ฐ€ ๋‚ซ๋‹ค
      • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํƒ€์ž… ์ง€์ •์•ˆ๋œ ์ƒ์ˆ˜๋‚˜ ๋ฆฌํ„ฐ๋Ÿด ํ• ๋‹น์‹œ์—๋„ x := byte(20) ๋ณด๋‹ค๋Š” var x byte = 20 ์ด ๋‚ซ๋‹ค.
    • 2.3 CONST ์‚ฌ์šฉ
    • 2.4 ํƒ€์ž… ์ง€์ • ์ƒ์ˆ˜์™€ ํƒ€์ž… ๋ฏธ์ง€์ • ์ƒ์ˆ˜
    • 2.5 ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜
    • 2.6 ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜ ์ด๋ฆ„ ์ง“๊ธฐ
    • 2.7 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 3 ๋ณตํ•ฉ ํƒ€์ž…

    • 3.1 ๋ฐฐ์—ด
      • ์ œํ•œ์ด ๋งŽ์Œ
      • ๊ธธ์ด๋งˆ๋‹ค ๋‹ค๋ฅธ ํƒ€์ž…์ด๊ณ , ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๊ธฐ์œ„ํ•œ ๋ณ€์ˆ˜๋„ ์‚ฌ์šฉ๋ชปํ•จ (ํƒ€์ž…์ด๋ผ ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ๋ฐ˜๋“œ์‹œ ํ•ด์„๋˜์–ด์•ผํ•จ)
      • ๊ทธ๋ฆฌ๊ณ  ๋™์ผํ•œ ํƒ€์ž…์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๊ฐ„์— ํƒ€์ž…๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์—†๋‹ค (ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉ๋ถˆ๊ฐ€)
      • ๋‹ค๋งŒ ์ด๋Ÿฐ ํƒ€์ž…์„ ์ œ๊ณตํ•˜๋Š”๊ฑด ์Šฌ๋ผ์ด์Šค๊ฐ€ ๋ฐฐ์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ
    • 3.2 ์Šฌ๋ผ์ด์Šค
      • append์™€ ๊ฐ™์€ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ์—๋Ÿฌ๋‹ค.
      • call by value๋กœ ๊ฐ’์„ ๋„˜๊ธฐ๊ณ  ์ถ”๊ฐ€๋œ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ์— ๋‹ค์‹œ ํ• ๋‹นํ•ด์ค˜์•ผํ•œ๋‹ค.
      • ์ฐธ๊ณ : go runtime์€ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ํฌํ•จํ•˜๋ฉฐ, ๋Ÿฐํƒ€์ž„์„ ์œ„ํ•ด vm๋“ฑ์„ ์„ค์น˜ํ•ด์•ผํ•˜๋Š” ์–ธ์–ด๊ฐ€ ์•„๋‹˜, ๊ทธ๋ฆฌ๊ณ  ๋Ÿฐํƒ€์ž„์—๋Š” gc๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ๋™์‹œ์„ฑ/๋„คํŠธ์›Œํ‚น ์ง€์›, ๋‚ด์žฅํƒ€์ž…๊ณผ ํ•จ์ˆ˜๋“ฑ์ด ์žˆ๋‹ค.
      • ์Šฌ๋ผ์ด์Šค๋Š” capacity๊ฐ€ ์žˆ๋Š”๋ฐ len๋ณด๋‹ค ๊ธธ ์ˆ˜ ์žˆ๊ณ , go runtime์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.
      • ์–ด๋–ค ๊ฒฝ์šฐ์— ์–ด๋–ป๊ฒŒ ์„ ์–ธํ•˜๋Š”๊ฒƒ์ด ์ข‹์„๊นŒ?
        • ์Šฌ๋ผ์ด์Šค๊ฐ€ ์ „ํ˜€ ์ปค์งˆ ์ผ์ด ์—†๋‹ค๋ฉด (ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜์•ˆํ•˜๋Š” ๋ถ„๊ธฐ) var : var data int[]
        • ์‹œ์ž‘๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฆฌํ„ฐ๋Ÿด : data := []int{2, 4, 6, 8}
        • ์Šฌ๋ผ์ด์Šค๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ปค์งˆ์ง€ ์ž˜ ์•Œ์ง€๋งŒ, ๋ญ๊ฐ€ ๋“ค์–ด๊ฐˆ์ง€ ๋ชจ๋ฅด๋ฉด make (๋‹ค๋งŒ make๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด๋†“๊ณ  append๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ๊ทธ๊ฒŒ ํ•„์š”ํ•œ์ง€ ์žฌ๊ฒ€ํ† )
      • ์Šฌ๋ผ์ด์Šค ์Šฌ๋ผ์ด์‹ฑ์€ ์ฐธ์กฐ๊ธฐ๋ฐ˜
      • ์Šฌ๋ผ์ด์Šค๋ฅผ ์ทจํ•  ๋•Œ ๋งˆ๋‹ค ํ•˜์œ„์Šฌ๋ผ์ด์Šค์˜ ์ˆ˜์šฉ๋ ฅ์€ ์›๋ณธ ์Šฌ๋ผ์ด์Šค์˜ ์ˆ˜์šฉ๋ ฅ์—์„œ ํ•˜์œ„์Šฌ๋ผ์ด์Šค์˜ ์‹œ์ž‘ ์˜คํ”„์…‹๋งŒํผ์„ ๋บ€ ๊ฐ’์ด ์„ค์ •๋จ
package main

import "fmt"

func PrintHello() {
	x := make([]int, 0, 5)
	x = append(x, 1, 2, 3, 4)
	y := x[:2]
	z := x[2:]
	fmt.Println(cap(x), cap(y), cap(z))
	x = append(x, 30, 40, 50)
	x = append(x, 60)
	z = append(z, 70)
	fmt.Println("x: ", x)
	fmt.Println("y: ", y)
	fmt.Println("z: ", z)
}

/**
  1. 5 5 3 ์ถœ๋ ฅ:
    - cap(x) = 5: ์ดˆ๊ธฐ ์šฉ๋Ÿ‰ 5๋กœ ์ƒ์„ฑ
    - cap(y) = 5: y๋Š” x[:2]๋กœ ๊ฐ™์€ ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ์šฉ๋Ÿ‰ 5
    - cap(z) = 3: z๋Š” x[2:]๋กœ ์ธ๋ฑ์Šค 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ๋‚จ์€ ์šฉ๋Ÿ‰ 3
  2. ์Šฌ๋ผ์ด์Šค ๊ณต์œ ์™€ ์žฌํ• ๋‹น:
    - x์— 30, 40, 50, 60์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์šฉ๋Ÿ‰ ์ดˆ๊ณผ๋กœ ์ƒˆ ๋ฐฐ์—ด ํ• ๋‹น
    - y์™€ z๋Š” ์—ฌ์ „ํžˆ ์›๋ž˜ ๋ฐฐ์—ด ์ฐธ์กฐ
    - z์— 70 ์ถ”๊ฐ€ ์‹œ ์›๋ž˜ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค 4 ์œ„์น˜์— ์ €์žฅ
  3. ์ตœ์ข… ๊ฒฐ๊ณผ:
    - x: [1 2 3 4 30 40 50 60] - ์ƒˆ ๋ฐฐ์—ด
    - y: [1 2] - ์›๋ž˜ ๋ฐฐ์—ด์˜ ์ฒ˜์Œ 2๊ฐœ ์š”์†Œ
    - z: [3 4 70] - ์›๋ž˜ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค 2๋ถ€ํ„ฐ, 70์ด ์ถ”๊ฐ€๋จ
*/

func main() {
	PrintHello()
}
  • 3.3 ๋ฌธ์ž์—ด๊ณผ ๋ฃฌ ๊ทธ๋ฆฌ๊ณ  ๋ฐ”์ดํŠธ

  • 3.4 ๋งต

  • 3.5 ๊ตฌ์กฐ์ฒด

  • 3.6 ๋งˆ๋ฌด๋ฆฌ

  • CHAPTER 4 ๋ธ”๋ก, ์„€๋„, ์ œ์–ด ๊ตฌ์กฐ

    • 4.1 ๋ธ”๋ก
    • 4.2 if ๋ฌธ
    • 4.3 for ๋ฌธ
    • 4.4 switch ๋ฌธ
    • 4.5 ๊ณต๋ฐฑ switch ๋ฌธ
    • 4.6 if ๋ฌธ๊ณผ switch ๋ฌธ ์ค‘ ์„ ํƒ
    • 4.7 goto ๋ฌธ
    • 4.8 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 5 ํ•จ์ˆ˜

    • 5.1 ํ•จ์ˆ˜ ์„ ์–ธ๊ณผ ํ˜ธ์ถœ
    • 5.2 ํ•จ์ˆ˜๋Š” ๊ฐ’์ด๋‹ค
    • 5.3 ํด๋กœ์ €
    • 5.4 defer
      • defer ํ‚ค์›Œ๋“œ ์ดํ›„์— ํ•จ์ˆ˜ํ˜ธ์ถœ์€ return ์ดํ›„ ์ง€์—ฐํ˜ธ์ถœ
      • ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ํด๋กœ์ €๋กœ ํ™˜๊ฒฝ์„ ์บก์ณํ•˜๊ธฐ์— named return๊ณผ ํ•จ๊ป˜ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.
        • ๋ณ€์ˆ˜์ฒ˜๋Ÿผ named return์„ ํ•˜๋Š”๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ err
        • defer ์ง€์—ฐํ˜ธ์ถœํ•˜๋Š” ์‹œ์ ์— ๋งˆ์ง€๋ง‰ err๊ฐ’์„ ๋ณด๊ณ  ๋ถ„๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋™์ž‘์‹œํ‚ค๊ฑฐ๋‚˜ ํ•ด๋‹น err๋ฅผ ๋ฐ”๊ฟ€์ˆ˜ ์žˆ๋‹ค.
        • ๊ทธ๋ฆฌ๊ณ  ๋ช‡๋ช‡ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋“ค์€ ์ผ๋ถ€๋Ÿฌ ํด๋กœ์ €๋ฅผ ๋ฐ˜ํ™˜ํ•ด์„œ defer ํ˜ธ์ถœ์„ ์ƒ๊ธฐ์‹œํ‚จ๋‹ค
        • ๋งˆ์ง€๋ง‰์œผ๋กœ ์—ฌ๋Ÿฌ defer์„ ์„ ์–ธํ•ด๋‘๋ฉด ์Šคํƒ์ˆœ์„œ๋กœ ๋™์ž‘ํ•œ๋‹ค.
    • 5.5 ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” Go
      • ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค ๊ฐ’์„ ๋ณต์‚ฌ๋ฅผ ํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค.
      • ๊ทธ๋ž˜๋„ ๋ฐ”๊ฟ”๋„ ๋ถˆ๋ณ€
      • ๊ทผ๋ฐ ์Šฌ๋ผ์ด์Šค๊ฐ™์€ ์• ๋“ค์€ ๋ณ€๊ฒฝ์ด ์œ ํšจํ•œ๋ฐ ์ด๊ฑด ํฌ์ธํ„ฐ๋ฅผ ๋„˜๊ธฐ๊ธฐ ๋•Œ๋ฌธ, ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์Šฌ๋ผ์ด์Šค๋„ ๊ฐ’์„ ์ „๋‹ฌํ•˜์ง€๋งŒ ๊ฑฐ๊ธฐ์— ์Šฌ๋ผ์ด์Šค ํ—ค๋”์— ํฌํ•จ๋œ ํฌ์ธํ„ฐ๊ฐ€ ์žˆ์Œ
    • 5.6 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 6 ํฌ์ธํ„ฐ

์ค‘์š”ํ•œ ์„ค๊ณ„ ์ฒ ํ•™์ด ๋‚˜์˜จ๋‹ค, ์ฒ˜์Œ์—๋Š” ์ž๊พธ ๋ถˆ๋ณ€์„ฑ๊ณผ ๊ด€๋ จํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๊ฐ™์ดํ•ด์„œ ์•ฝ๊ฐ„ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ’์„(๋ณต์‚ฌ) ์ „๋‹ฌํ•˜๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๋ณ€์„ฑ์„ ๊ตณ์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋…ผ์กฐ๋กœ ์ดํ•ดํ•˜๋ฉด ์ดํ•ด๊ฐ€ ๋” ์‰ฝ๋‹ค. ๊ทธ๋ฆฌ๊ณ  python, java์™€ ๊ฐ™์ด ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ๋„ ์ง€์›ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ๊ฒฝ์šฐ ๋ช…์‹œ์ ์ธ ํฌ์ธํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์•ผํ•˜๊ณ , ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด๋ผ๋ฉด ๋ฌธ๋ฒ•์— ์˜ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์ฐธ์กฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ƒํ™ฉ ์ž์ฒด๊ฐ€ ๊ฐ€๋ณ€์„ฑ์„ ์—ผ๋‘์— ๋‘๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ตณ์ด ๋ถˆํ•„์š”ํ•œ ๋ถˆ๋ณ€์„ฑ ์ง€์› ๋ฌธ๋ฒ•์€ ํ•„์š” ์—†๋‹ค๋Š” ์˜๊ฒฌ์ด๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํฌ์ธํ„ฐ์˜ ์ „๋‹ฌ ์—ญ์‹œ ์‹ค์งˆ์ ์œผ๋กœ๋Š” โ€˜์ฃผ์†Œ ๊ฐ’โ€™์„ ๋ณต์‚ฌํ•˜๋Š” ํ–‰์œ„์ด๊ธฐ๋•Œ๋ฌธ์—, ์•„๋ž˜์˜ ํŒŒ์ด์ฌ ์ฝ”๋“œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์›๋ณธ์˜ ์ฐธ์กฐ ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์œ„ํ—˜ํ•œ์ผ์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋˜์–ด์žˆ๋‹ค.

class Foo:
    def __init__(self, x):
        self.x = x

def outer():
    f = Foo(10)
    inner1(f)
    print(f.x) # 20 '๋ณต์‚ฌ๋œ ์ฐธ์กฐ๋ฅผ ๋„˜๊ธฐ์ง€๋งŒ ๊ทธ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ๊ฐ’์„ ๋ฐ”๊ฟˆ'
    inner2(f)
    print(f.x) # 20 '์ฐธ์กฐ ์ž์ฒด๋Š” ๋ณต์‚ฌ๋˜์–ด ์ด๋Ÿฐ ๋ณ€๊ฒฝ์€ ์˜๋ฏธ๊ฐ€ ์—†์Œ'
    g = None
    inner2(g)
    print(g is None) # true '๋งˆ์ฐฌ๊ฐ€์ง€'
    


def inner1(f):
    f.x = 20

def inner2(f):
    f = Foo(30)


# Golang๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด์ง€๋งŒ, ํฌ์ธํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ์„ ํƒ์ง€๋ฅผ ์ค€ ๊ฒƒ
# ๊ทธ๋ž˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ GC์ตœ์ ํ™” ๋“ฑ์„ ์ด์œ ๋กœ ๊ฐ’์„ ๋„˜๊ธฐ๋Š” ๋ฐฉ์‹์„ ๋จผ์ € ์ƒ๊ฐํ• ๊ฒƒ
  • 6.1 ๋น ๋ฅธ ํฌ์ธํ„ฐ ์ž…๋ฌธ

  • 6.2 ํฌ์ธํ„ฐ๋ฅผ ๋‘๋ ค์›Œ ๋ง๋ผ

  • 6.3 ํฌ์ธํ„ฐ๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค

  • 6.4 ํฌ์ธํ„ฐ๋Š” ์ตœํ›„์˜ ์ˆ˜๋‹จ

  • 6.5 ํฌ์ธํ„ฐ๋กœ ์„ฑ๋Šฅ ๊ฐœ์„ 

    • 10 ๋ฉ”๊ฐ€ ์ด์ƒ์˜ ๋ฐ˜ํ™˜๊ฐ’์—์„œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์„๋•Œ ์„ฑ๋Šฅ ๊ฐœ์„ ์˜ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • 6.6 ์ œ๋กœ ๊ฐ’๊ณผ ๊ฐ’์—†์Œ์˜ ์ฐจ์ด

  • 6.7 ๋งต๊ณผ ์Šฌ๋ผ์ด์Šค์˜ ์ฐจ์ด

    • ๋งต์€ ํฌ์ธํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š”๊ฒƒ๊ณผ ์ฐจ์ด๊ฐ€ ์—†์Œ, ์ข‹์€ ์„ค๊ณ„๋Š” ์•„๋‹ˆ๊ฒ ์ง€๋งŒ ๋งต์„ ๋„˜๊ฒจ์„œ ์ˆ˜์ •ํ•˜๋ฉด ์˜๋„๋Œ€๋กœ๋Š” ๋™์ž‘ํ•จ
    • ์Šฌ๋ผ์ด์Šค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค. ํ—ค๋”๋ฅผ ๋ณต์‚ฌํ•˜๋Š”๋ฐ ํ—ค๋”์— capacity, len๋“ฑ์˜ ๋ฉ”ํƒ€์ •๋ณด๊ฐ€ ๋ณต์‚ฌ๋˜์–ด ๋„˜๊ฒจ์ง€๋ฏ€๋กœ, append์™€ ๊ฐ™์€ ์ˆ˜์ •์€ ์›๋ณธ์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๊ณ , ์›๋ณธ capacity๋‚ด์˜ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์€ ์ผ๊ด€์„ฑ์ด ์‹ฌ๊ฐํ•˜๊ฒŒ ์—†๋‹ค.
  • 6.8 ๋ฒ„ํผ ์Šฌ๋ผ์ด์Šค

    • ํž™ํ• ๋‹น์„ ์ค„์ด์ž!
  • 6.9 ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ž‘์—…๋Ÿ‰ ์ค„์ด๊ธฐ

    • java์˜ gc๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฉด์—์„œ ์—„์ฒญ๋‚˜๊ฒŒ ์ž˜ ํŠœ๋‹๋˜์–ด์žˆ์–ด, ์ผ๋ถ€๋งŒ ์Šคํƒ์— ์œ ์ง€ํ•˜๊ณ  ์‹ค์ œ ram(ํž™)์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋„ ์„ฑ๋Šฅ์œ ์ง€๋ฅผ ์ž˜ ํ•ด์ค€๋‹ค.
    • ๋‹ค๋งŒ go๋Š” ๊ทธ์ •๋„๊ฐ€ ์•„๋‹ˆ๊ณ  ์ตœ๋Œ€ํ•œ heap์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ์Šคํƒ๋‚ด์—์„œ ์น˜๋ฆฌ๋˜๋„๋ก ๊ด€์šฉ๊ตฌ๋“ค์ด ์œ ๋„ํ•œ๋‹ค.
  • 6.10 ๋งˆ๋ฌด๋ฆฌ

  • CHAPTER 7 ํƒ€์ž…, ๋ฉ”์„œ๋“œ, ์ธํ„ฐํŽ˜์ด์Šค

    • 7.1 Go์˜ ํƒ€์ž…
    • 7.2 ๋ฉ”์„œ๋“œ
      • ๊ฐ’ ํƒ€์ž…์ธ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ํฌ์ธํ„ฐ ๋ฆฌ์‹œ๋ฒ„์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด, Go๋Š” ์ž๋™์œผ๋กœ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ํฌ์ธํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
      • c.Increment() to (&c).Increment()
      • ๋ฌธ์ œ๋Š” ํ•จ์ˆ˜๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™์—๋„ ์ ์šฉ๋˜์–ด ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ฐ’ํƒ€์ž…์„ ํ•จ์ˆ˜๋กœ ๋„˜๊ธฐ๊ณ  ๋„˜๊ฒจ์ง„ ๊ฐ’์˜ ํฌ์ธํ„ฐ ๋ฆฌ์‹œ๋ฒ„ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ๋ณต์‚ฌ๋ณธ์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
      • nil ๋ฆฌ์‹œ๋ฒ„์—์„œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์€ ๊ฐ€๋Šฅํ•˜๊ณ , nil check์ดํ›„์— ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋Š” ์œ ์šฉํ•˜๋‹ค. ํ•˜์ง€๋งŒ, ๋ณดํ†ต์€ ์œ ์šฉํ•˜์ง€ ์•Š์€๋ฐ, ๊ฒฐ๊ตญ ์ด๊ฒƒ๋„ ํฌ์ธํ„ฐ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ nil๊ณผ ๊ฐ™์ด ์›๋ณธ ํฌ์ธํ„ฐ๋ฅผ nil์ด ์•„๋‹Œ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    • 7.3 ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์ž„๋ฒ ๋”ฉ ์‚ฌ์šฉ
    • 7.4 ์ž„๋ฒ ๋”ฉ์€ ์ƒ์†์ด ์•„๋‹ˆ๋‹ค
    • 7.5 ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ง€๋„
    • 7.6 ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํƒ€์ž…์— ์•ˆ์ •์ ์ธ ๋• ํƒ€์ดํ•‘์ด๋‹ค
    • 7.7 ์ž„๋ฒ ๋”ฉ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค
    • 7.8 ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ›๊ณ  ๊ตฌ์กฐ์ฒด ๋ฐ˜ํ™˜ํ•˜๊ธฐ
      • ํ•จ์ˆ˜๋กœ ์‹คํ–‰๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ์€ ๊ตฌ์ฒด ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.
      • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” API๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ์•”๋ฌต์  ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฃผ์š” ์žฅ์ ์ธ ๋””์ปคํ”Œ๋ง์„ ์žƒ๊ฒŒ ๋œ๋‹ค.
      • ๋ฒ„์ €๋‹ ๊ด€์ ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ๋งŽ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ˆ˜์ •์€ ๋ชจ๋“  ๊ตฌํ˜„์„ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•œ๋‹ค.
      • ์ž…๋ ฅ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋‹จ์ผ ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜๋ณด๋‹ค, ๊ฐ ๊ตฌ์ฒด์— ๋งž๋Š” ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
    • 7.9 ์ธํ„ฐํŽ˜์ด์Šค์™€ nil
      • go ๋Ÿฐํƒ€์ž„์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์™€ ๊ธฐ๋ณธ ๊ฐ’์—๋Œ€ํ•œ ํฌ์ธํ„ฐ ์Œ์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ๋‹ค.
    • 7.10 ๋นˆ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์–ด๋–ค ๊ฒƒ๋„ ํ‘œํ˜„ํ•˜์ง€ ์•Š๋Š”๋‹ค
    • 7.11 ํƒ€์ž… ๋‹จ์–ธ ๋ฐ ํƒ€์ž… ์Šค์œ„์น˜
    • 7.12 ํƒ€์ž… ๋‹จ์–ธ๊ณผ ํƒ€์ž… ์Šค์œ„์น˜๋ฅผ ์•„๊ปด ์‚ฌ์šฉํ•˜๊ธฐ
    • 7.13 ํ•จ์ˆ˜ ํƒ€์ž…์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ์˜ ์—ฐ๊ฒฐ
    • 7.14 ์˜์กด์„ฑ ์ฃผ์ž…์„ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ์•”๋ฌต์  ์ธํ„ฐํŽ˜์ด์Šค
    • 7.15 Wire
    • 7.16 GoO๋Š” ํŠนํžˆ ๊ฐ์ฒด์ง€ํ–ฅ์ด ์•„๋‹ˆ๋‹ค
    • 7.17 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 8 ์˜ค๋ฅ˜

    • 8.1 ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•: ๊ธฐ์ดˆ
      • ๊ตณ์ด err๋ฅผ ๋‚ด๋ ค์ฃผ๋Š” ์ด์œ , ์žฅํ™ฉํ•ด ๋ณด์—ฌ๋„ ๋ช…ํ™•ํ•˜๋‹ค.
      • ๋ช…์‹œ์  ์ฝ”๋“œ์ƒ์˜ if ๋ถ„๊ธฐ๋กœ ์ฒ˜๋ฆฌ๋˜๊ฒŒํ•œ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์€ ๊ทธ๋ ‡๊ฒŒ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ธฐ์— ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ง๊ด€์ ์œผ๋กœ ์ธ์ง€ํ•˜๊ธฐ ์‰ฝ๋‹ค.
    • 8.2 ๋‹จ์ˆœ ์˜ค๋ฅ˜์— ๋ฌธ์ž์—ด ์‚ฌ์šฉ
    • 8.3 ์„ผํ‹ฐ๋„ฌ ์˜ค๋ฅ˜
    • 8.4 ์˜ค๋ฅ˜๋Š” ๊ฐ’์ด๋‹ค
    • 8.5 ์˜ค๋ฅ˜ ๋ž˜ํ•‘
    • 8.6 Is์™€ As
    • 8.7 defer๋กœ ์˜ค๋ฅ˜ ๋ž˜ํ•‘
    • 8.8 ํŒจ๋‹‰๊ณผ ๋ณต๊ตฌ
    • 8.9 ์˜ค๋ฅ˜์—์„œ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค ์–ป๊ธฐ
    • 8.10 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 9 ๋ชจ๋“ˆ, ํŒจํ‚ค์ง€ ๊ทธ๋ฆฌ๊ณ  ์ž„ํฌํŠธ

    • 9.1 ์ €์žฅ์†Œ, ๋ชจ๋“ˆ ๊ทธ๋ฆฌ๊ณ  ํŒจํ‚ค์ง€
    • 9.2 go.mod
    • 9.3 ํŒจํ‚ค์ง€ ๋นŒ๋“œ
    • 9.4 ๋ชจ๋“ˆ ๊ด€๋ จ ์ž‘์—…
    • 9.5 ๋ชจ๋“ˆ ๊ฒŒ์‹œ
    • 9.6 ๋ชจ๋“ˆ ๋ฒ„์ „ ๊ด€๋ฆฌ
    • 9.7 ๋ชจ๋“ˆ์„ ์œ„ํ•œ ํ”„๋ก์‹œ ์„œ๋ฒ„
    • 9.8 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 10 GO์˜ ๋™์‹œ์„ฑ

  • Goroutines-Brief

    • 10.1 ๋™์‹œ์„ฑ ์‚ฌ์šฉ ์‹œ์ 
      • ๋™์‹œ์„ฑ์€ ๊ทธ ์ž์ฒด๋กœ ๋ณ‘๋ ฌ์„ฑ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋™์‹œ์„ฑ ์ฝ”๋“œ๊ฐ€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ•˜๋“œ์›จ์–ด์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ—ˆ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
      • ๋„“์€ ์˜๋ฏธ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์„ธ๋‹จ๊ณ„์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.
        • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ ,
        • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ
        • ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
      • ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋™์‹œ์„ฑ ์‚ฌ์šฉ์˜ ์—ฌ๋ถ€๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹จ๊ณ„๋ณ„ ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.
        • ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ฒ˜๋ฆฌ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉ์‹œํ‚ค๊ธธ ์›ํ•œ๋‹ค๋ฉด ๋™์‹œ์„ฑ์„ ์‚ฌ์šฉํ•˜์ž
    • 10.2 ๊ณ ๋ฃจํ‹ด
      • ๊ณ ๋ฃจํ‹ด์€ Go ๋Ÿฐํƒ€์ž„์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ€๋ฒผ์šด ํ”„๋กœ์„ธ์Šค์ด๋‹ค.
      • Go ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด, ๋Ÿฐํƒ€์ž„์€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ผ ๊ณ ๋ฃจํ‹ด์„ ์‹œ์ž‘ํ•œ๋‹ค
      • ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ณ ๋ฃจํ‹ด์€ ์ดˆ๊ธฐ์— ์ƒ์„ฑ๋œ ํ•˜๋‚˜๋ฅผ ํฌํ•จํ•˜์—ฌ ์šด์˜์ฒด์ œ์—์„œ CPU์ฝ”์–ด์— ๋”ฐ๋ผ ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„๋ง ํ•˜๋“ฏ์ด, Go ๋Ÿฐํƒ€์ž„ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์Šค๋ ˆ๋“œ๋“ค์„ ํ• ๋‹นํ•œ๋‹ค.
      • ๊ธฐ๋ณธ OS ์‹œ์Šคํ…œ์ด ์Šค์ผ€์ค„๋ง์„ ์•Œ์•„์„œ ํ•˜๊ธฐ์— ์ด๊ฒŒ ๋ถ€๊ฐ€์ ์ธ ์ž‘์—…์œผ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช‡๊ฐ€์ง€ ์ด์ ์ด ์žˆ๋‹ค.
        • ๊ณ ๋ฃจํ‹ด ์ƒ์„ฑ์€ ์šด์˜์ฒด์ œ ๋ ˆ๋ฒจ ์ž์›์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ์— ์Šค๋ ˆ๋“œ ์ƒ์„ฑ๋ณด๋‹ค ๋น ๋ฅด๋‹ค.
        • ๊ณ ๋ฃจํ‹ด์˜ ์ดˆ๊ธฐ ์Šคํƒํฌ๋ฆฌ๋Š” ์Šค๋ ˆ๋“œ์˜ ์Šคํƒ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์œผ๋ฉฐ ํ•„์š”ํ•˜๋‹ค๋ฉด ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.
        • ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ณ ๋ฃจํ‹ด์˜ ์ „ํ™˜์€ ์‹œ์Šคํ…œ์ฝœ๋กœ์ธํ•œ ์Šค๋ ˆ๋“œ ์ „ํ™˜๋ณด๋‹ค ๋น ๋ฅด๋‹ค.
        • ์œ„์™€ ์—ฐ๊ด€๋˜์–ด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ Go ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ๋™์ž‘ํ•ด์„œ ๋ณ„๋„์˜ ์Šค์ผ€์ค„๋ง ๊ฒฐ์ •์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • 10.3 ์ฑ„๋„
    • 10.4 select ๋ฌธ
    • 10.5 ๋™์‹œ์„ฑ ์‚ฌ๋ก€์™€ ํŒจํ„ด
    • 10.6 ์ฑ„๋„ ๋Œ€์‹ ์— ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • 10.7 ์›์ž์  ์—ฐ์‚ฐ
    • 10.8 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 11 ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    • 11.1 ์ž…์ถœ๋ ฅ ๊ด€๋ จ ๊ธฐ๋Šฅ
    • 11.2 ์‹œ๊ฐ„
    • 11.3 encoding/json
    • 11.4 net/http
    • 11.5 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 12 ์ปจํ…์ŠคํŠธ

    • 12.1 ์ปจํ…์ŠคํŠธ ์†Œ๊ฐœ
    • 12.2 ์ทจ์†Œ
    • 12.3 ํƒ€์ด๋จธ
    • 12.4 ์ฝ”๋“œ์—์„œ ์ปจํ…์ŠคํŠธ ์ทจ์†Œ ์ฒ˜๋ฆฌ
    • 12.5 ๊ฐ’
    • 12.6 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 13 ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

    • 13.1 ํ…Œ์ŠคํŒ…์˜ ๊ธฐ์ดˆ
    • 13.2 ํ…Œ์ด๋ธ” ํ…Œ์ŠคํŠธ
    • 13.3 ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ํ™•์ธ
    • 13.4 ๋ฒค์น˜๋งˆํฌ
    • 13.5 Go์˜ ์Šคํ…
    • 13.6 httptest
    • 13.7 ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œ ํƒœ๊ทธ
    • 13.8 ๋ ˆ์ด์Šค ๊ฒ€์ถœ๊ธฐ๋กœ ๋™์‹œ์„ฑ ๋ฌธ์ œ ์ฐพ๊ธฐ
    • 13.9 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 14 Reflect, Unsafe, Cgo

    • 14.1 ๋ฆฌํ”Œ๋ ‰์…˜์€ ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ํƒ€์ž… ์ œ์–ด
    • 14.2 ๋ถˆ์•ˆ์ „ํ•œ Unsafe
    • 14.3 ์„ฑ๋Šฅ์ด ์•„๋‹Œ ํ†ตํ•ฉ์„ ์œ„ํ•œ Cgo
    • 14.4 ๋งˆ๋ฌด๋ฆฌ
  • CHAPTER 15 Go์˜ ์ œ๋„ค๋ฆญ

    • 15.1 ๋ฐ˜๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ํƒ€์ž… ์•ˆ์ „ ์ฆ๊ฐ€
    • 15.2 Go์˜ ์ œ๋„ค๋ฆญ
    • 15.3 ํƒ€์ž… ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์ž ์ง€์ •
    • 15.4 ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ถ”์ƒํ™”ํ•œ๋‹ค
    • 15.5 ํƒ€์ž… ๋ชฉ๋ก์€ ์ƒ์ˆ˜์™€ ๊ตฌํ˜„์„ ์ œํ•œํ•œ๋‹ค
    • 15.6 ์†Œ์™ธ๋œ ๊ฒƒ
    • 15.7 ๊ด€์šฉ์  Go์™€ ์ œ๋„ค๋ฆญ
    • 15.8 ์ดํ›„ ํ•ด์ œ๋  ๊ฒƒ๋“ค
    • 15.9 ๋งˆ๋ฌด๋ฆฌ