Go에서 for 루프를 작성하는 모든 방법

5861 단어 go


게시물All the Ways to Write for Loops in GoQvault에 처음 등장했습니다.

for 루프는 코드 블록을 반복적으로 실행하며 Golang에서는 코드를 작성하는 여러 가지 방법이 있습니다.
  • The standard three-component loop

  • For-range loop
  • Range over slice
  • Range over map
  • Range over channel
  • Range over string

  • While loop
  • Optional components loop
  • Infinite loop
  • Break from a loop
  • Continue (skip to the next iteration) in a loop

  • #1 표준 3성분 루프



    Go에는 C, Java 또는 JavaScript에서 익숙할 3개 구성 요소 루프에 대한 상당히 표준적인 구문이 있습니다. 가장 큰 차이점은 구성 요소를 둘러싼 괄호가 없다는 것입니다.

    for i := 0; i < 100; i++ {
        sum += i
    }
    


    세 가지 구성요소는 init 문i := 0 , 조건문i < 100 및 post 문i++ 입니다. 루프를 실행하는 단계는 다음과 같습니다.
  • init 문이 실행되고 여기에서 선언된 변수는 루프 본문의 범위에서 사용할 수 있습니다.
  • 조건이 계산됩니다. true로 평가되면 본문이 실행되고 그렇지 않으면 루프가 완료됩니다.
  • post 문이 실행됩니다.
  • 2단계가 반복됩니다.

  • #2 For-range 루프



    종종 맵, 슬라이스, 채널 또는 문자열과 같은 항목 모음을 반복하는 것이 유용해 보입니다. 기존의 3개 구성 요소 루프를 사용할 수 있지만 Go에서는 range 키워드를 사용하여 쉽게 만들 수 있습니다.

    Go에서 슬라이스 범위




    fruits := []string{"apple", "banana", "pear"}
    for i, fruit := range fruits {
        fmt.Println(i, s)
    }
    // prints:
    // 0 apple
    // 1 banana
    // 2 pear
    


    Go에서 지도 범위




    ages := map[string]int{
        "lane": 26,
        "preston": 28,
        "rory": 21,
    }
    for name, age := range ages {
        fmt.Println(name, age)
    }
    // prints:
    // lane 26
    // preston 28
    // rory 21
    


    Go에서 채널 범위




    ch := make(chan int)
    go func() {
        for i := 0; i < 3; i++ {
            ch <- i
        }
        close(ch)
    }()
    
    // loop ends when channel is close
    for value := range ch {
        fmt.Println(value)
    }
    fmt.Println("channel closed")
    
    // prints:
    // 0
    // 1
    // 2
    // channel closed
    


    Go에서 문자열 범위




    name := "lane"
    for i, char := range name {
         // cast the rune to a string for printing 
         fmt.Println(i, string(char))
    }
    
    // prints
    // 0 l
    // 1 a
    // 2 n
    // 3 e
    


    #3 While 루프



    for-loop 서명에서 3개가 아닌 단일 구성 요소를 사용하여 Golang에서 while 루프를 효과적으로 구축할 수 있습니다. Go에는 while 키워드가 없습니다.

    sum := 1
    for sum < 10 {
        sum += sum
    }
    fmt.Println(sum)
    


    #4 선택적 구성 요소 루프



    유연한 for 루프의 아이디어를 바탕으로 3개 구성 요소 루프의 init 또는 post 문을 원하는 대로 생략할 수 있습니다.

    i := 0
    for ; sum < 1000; i++ {
        sum += i
    }
    
    for i := 0; sum < 1000; {
        sum += i
        i++
    }
    


    do-while, or an immediate first tick from a ticker.과 같은 것을 원할 때 유용한 패턴이 될 수 있습니다.

    #5 무한 루프



    무한 루프는 영원히 계속되어야 하는 작업자나 프로세스가 있을 때 고루틴 내에서 유용합니다.

    sum := 0
    for {
        sum++ // repeated forever
    }
    // never reached, loops continues on forever
    


    #6 루프에서 벗어나기



    루프에서 일찍 중단하는 것은 특히 무한 루프에서 유용할 수 있습니다. break 키워드는 루프를 즉시 종료합니다.

    sum := 0
    for {
        sum++
        if sum >= 1000 {
            break
        }
    }
    fmt.Println(sum)
    
    // prints:
    // 1000
    


    #7 루프에서 계속(다음 반복으로 건너뛰기)



    루프의 다음 반복으로 일찍 건너뛰는 것이 유용할 수 있습니다. 이것은 루프 내에서 guard clauses에 대한 좋은 패턴이 될 수 있습니다.

    for i := 0; i < 10; i++{
        if i % 2 == 0 {
            continue
        }
        fmt.Println(i, "is odd")
    }
    
    // prints
    // 1 is odd
    // 3 is odd
    // 5 is odd
    // 7 is odd
    // 9 is odd
    


    읽어 주셔서 감사합니다. 이제 과정을 수강하십시오!



    기술 분야의 고임금 직업에 관심이 있으십니까? 실습 코딩 과정을 마친 후 인터뷰를 시작하고 멋지게 통과합니다.

    Start coding now

    질문?



    질문이나 의견이 있으면 트위터에서 나를 팔로우하고 연락하십시오. 기사에서 실수를 한 경우 반드시 let me know 수정하여 수정할 수 있도록 해주세요!

    Subscribe 받은 편지함으로 바로 전달되는 더 많은 코딩 기사를 보려면 내 뉴스레터로 보내십시오.

    좋은 웹페이지 즐겨찾기