๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋ฐ

[Go] Go for Beginners

ruhz 2021. 11. 30. 11:32
 

์‰ฝ๊ณ  ๋น ๋ฅธ Go ์‹œ์ž‘ํ•˜๊ธฐ – ๋…ธ๋งˆ๋“œ ์ฝ”๋” Nomad Coders

Learn Go Fast

nomadcoders.co

์ž‘์—… ํ™˜๊ฒฝ์€ C:\Go์— bin src pkg ํด๋”๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค(๊ถŒ์žฅ).

  • Go๋Š” ํ•จ์ˆ˜์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋Œ€๋ฌธ์ž/์†Œ๋ฌธ์ž ์ธ์ง€๋กœ public/private์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ํƒ€์ž… ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒ€์ž…์„ ๋ช…์‹œํ•ด์ค˜์•ผ ํ•˜์ง€๋งŒ, ํ•จ์ˆ˜ ์•ˆ์—์„œ ':=' ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•Œ์•„์„œ ์„ค์ •ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๊ฐ€ ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ ์ด ์—†๋‹ค๋ฉด ์—๋Ÿฌ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ํ•จ์ˆ˜์—์„œ "naked" return(ํ•จ์ˆ˜ ์„ ์–ธ ์‹œ ๋ฐ˜ํ™˜ํ•  ํƒ€์ž…๊ณผ ํ•จ๊ป˜ ๋ณ€์ˆ˜ ๋ช…์„ ๊ฐ™์ด ์„ ์–ธ), defer(ํ•จ์ˆ˜ ์ข…๋ฃŒ ํ›„ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ) ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ณต๋ฌธ

nubmers := [5]int{1, 2, 3, 4, 5}
// 1. ์ธ์ž ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
for index := range numbers {
	fmt.Println(index)
}
// 2. ์ธ์ž ๋‘๊ฐœ์ธ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์™€ ๊ฐ’์„ ๋ฐ˜ํ™˜
for index, number := numbers {
	fmt.Println(index, number)
}
// 3. ๊ฐ’๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ
for _, nubmer := numbers {
	fmt.Println(number)
}
// 4. ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ๋ฐ˜๋ณต๋ฌธ
for i := 0; i < len(numbers); i++ {
	fmt.Println(numbers[i])
}

์กฐ๊ฑด๋ฌธ

numbers := [5]int{1, 2, 3, 4, 5}
fmt.Println(numbers)
for _, number := range numbers {
   	// 1. ๊ธฐ๋ณธ ์กฐ๊ฑด๋ฌธ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
	if number%2 == 0 {
		fmt.Println(number)
	}
       	// 2. Go๋Š” if ๋ฌธ์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
       	if doubledNumber := number * 2; doubledNumber >= 10 {
		fmt.Println(number)
	}
       
       	// 3. Switch ๋ฌธ ์—ญ์‹œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
       	switch oe := number % 2; oe {
	case 0:
		fmt.Println("Even!")
		break
	case 1:
		fmt.Println("Odd!")
		break
	}
       	// 4. Switch ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™œ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
       	switch {
	case number%2 == 0:
		fmt.Println("Even!")
		break
	case number%2 == 1:
		fmt.Println("Odd!")
		break
	}     
}

ํฌ์ธํ„ฐ๋Š” C์™€ ๋˜‘๊ฐ™๋‹ค. &์œผ๋กœ ์ฃผ์†Œ๊ฐ’, *๋กœ ์ฃผ์†Œ๊ฐ’์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์— ์ ‘๊ทผ

  • ๋ฐฐ์—ด์˜ ์„ ์–ธ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๊ณ , ํฌ๊ธฐ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์€ ๋ฐฐ์—ด์„ ์Šฌ๋ผ์ด์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ํŒŒ์ด์ฌ์˜ ๋”•์…”๋„ˆ๋ฆฌ ๊ฐ™์ด key, value๋กœ ์ด๋ฃจ์–ด์ง„ ๋งต๋„ ์žˆ๋‹ค.
  • ๊ตฌ์กฐ์ฒด๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ์ƒ์„ฑ์ž๊ฐ€ ๋”ฐ๋กœ ์—†๋‹ค.
// ๋ฐฐ์—ด, ์Šฌ๋ผ์ด์Šค
saladArray = [5]string{"CHICKEN", "CARROT", "MUSHROOM"}
internArray = []string{"inseok", "jiwoong"}
internArray = append(internArray, "hyungju")

// ๋งต
saladMaps = map[string]int{"CHICKEN":3, "CARROT":12, "MUSHROOM":5}

// ๊ตฌ์กฐ์ฒด
type salad struct {
	name string
    calories int
    price int
}