Learning Go - Chapter 4. 블록, 섀도, 제어 구조

choko's avatar
Jun 29, 2024
Learning Go - Chapter 4. 블록, 섀도, 제어 구조
 
 

섀도잉 변수

  • 포함된 블록 내에 이름이 같은 변수가 있는 것
  • 섀도잉 변수가 존재하는 한 섀도잉 대상이 된 변수는 접근할 수 없다
 

for-range의 값은 복사본이다

  • 다음 작업에서 evenVals 리스트의 값들은 바뀌지 않는다.
    • evenVals := []int{2,4,6,8,10} for _, v := range evenVals { v *= 2 } fmt.Println(evenVals) // [2 4 6 8 10]
 
 
 

break 레이블

package main func main() { i := 0 L1: for { if i == 0 { break L1 } } println("OK") } // OK
  • break문은 보통 단독으로 사용되지만 경우에 따라 break 레이블과 같이 사용하여 지정된 레이블로 이동할 수 있다.
  • break L1 에 도달하면 for 루프를 빠져나와 L1 레이블로 이동하고, 현재 for문 전체를 빠져나와 OK를 출력하게 된다.
 
 
 
 

switch 문

  • Go의 switch문은 다른 언어들과 약간 다르다.
      1. switch문의 case는 아래 case 구문까지 실행되지 않는다.
        1. fallthrough 를 사용하면 다음 구문도 실행할 수 있다.
      1. case 1, 2, 3, 4와 같이 여러 값을 나열하여 묶을 수 있다.
      1. 비어 있는 case는 아무 일도 일어나지 않는다 (case 6, 7, 8, 9)
words := []string{"a", "cow", "smile", "gopher", "anthropologist"} for _, word := range words { switch size := len(word); size { case 1, 2, 3, 4: fmt.Println(word, "is too short") case 5: wordLen := len(word) fmt.Println(word, " length is ", wordLen) case 6, 7, 8, 9: default: fmt.Println(word, "is too long") }
 
Share article

Tom의 TIL 정리방