코스 이동: 선택

13334 단어 beginnerstutorialgo
이 튜토리얼에서는 Go의 select 문에 대해 알아봅니다.
select 문은 코드를 차단하고 여러 채널 작업을 동시에 기다립니다.

Aselect는 케이스 중 하나가 실행될 때까지 차단한 다음 해당 케이스를 실행합니다. 여러 개가 준비되면 무작위로 하나를 선택합니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    one := make(chan string)
    two := make(chan string)

    go func() {
        time.Sleep(time.Second * 2)
        one <- "One"
    }()

    go func() {
        time.Sleep(time.Second * 1)
        two <- "Two"
    }()

    select {
    case result := <-one:
        fmt.Println("Received:", result)
    case result := <-two:
        fmt.Println("Received:", result)
    }

    close(one)
    close(two)
}
switch 와 마찬가지로 select에도 다른 케이스가 준비되지 않은 경우 실행되는 기본 케이스가 있습니다. 이렇게 하면 차단 없이 보내거나 받을 수 있습니다.

func main() {
    one := make(chan string)
    two := make(chan string)

    for x := 0; x < 10; x++ {
        go func() {
            time.Sleep(time.Second * 2)
            one <- "One"
        }()

        go func() {
            time.Sleep(time.Second * 1)
            two <- "Two"
        }()
    }

    for x := 0; x < 10; x++ {
        select {
        case result := <-one:
            fmt.Println("Received:", result)
        case result := <-two:
            fmt.Println("Received:", result)
        default:
            fmt.Println("Default...")
            time.Sleep(200 * time.Millisecond)
        }
    }

    close(one)
    close(two)
}

select {}이 영원히 차단된다는 사실을 아는 것도 중요합니다.

func main() {
    ...
    select {}

    close(one)
    close(two)
}



이 문서는 Github에서 사용할 수 있는 내 오픈 소스Go Course의 일부입니다.


카란프라탑싱 / 고 코스


Go 프로그래밍 언어의 기본 및 고급 기능을 마스터하세요.





코스로 이동


이 과정에 오신 것을 환영합니다. Go를 배워 주셔서 감사합니다. 이 과정이 훌륭한 학습 경험을 제공하기를 바랍니다.
이 과정은 mywebsite 및 onEducative.io에서도 사용할 수 있습니다.

목차



  • 시작하기
  • What is Go?
  • Why learn Go?
  • Installation and Setup


  • 제1장
  • Hello World
  • Variables and Data Types
  • String Formatting
  • Flow Control
  • Functions
  • Modules
  • Packages
  • Workspaces
  • Useful Commands
  • Build


  • 제2장
  • Pointers
  • Structs
  • Methods
  • Arrays and Slices
  • Maps


  • 제3장
  • Interfaces
  • Errors
  • Panic and Recover
  • Testing
  • Generics


  • 제4장
  • Concurrency
  • Goroutines
  • Channels
  • Select
  • Sync Package
  • Advanced Concurrency Patterns
  • Context


  • 부록
  • Next Steps
  • References


  • 이동이란 무엇입니까?


    Go(Golang이라고도 함)는 2007년 Google에서 개발하고 2009년에 오픈 소스로 공개된 프로그래밍 언어입니다.
    단순성, 신뢰성 및 효율성에 중점을 둡니다. 정적으로 유형이 지정되고 컴파일된 언어의 효율성, 속도 및 안전성을 용이성과 결합하도록 설계되었습니다.

    View on GitHub

    좋은 웹페이지 즐겨찾기