[Go] μ±λ
μ±λμ κ³ λ£¨ν΄λ€λΌλ¦¬ μ 보λ₯Ό μ£Όκ³ λ°μ μΌμ’ μ ν΅λ‘λ€.
μ±λμ μμ±μ make ν¨μμ chan ν€μλλ₯Ό μ¬μ©νλ€.
make(chan νμ
)
chan T μμ²΄κ° Tμ μ±λ νμ
ννμ΄λ€.
μμ±λ μ±λ λ³μμ μ κ·Όν λλ μλμ κ°μ΄ νλ€.
λ³μ<-κ° (λμ
: μ‘μ μ)
<-λ³μ (κ° νλ: μμ μ)
μ κΈ°μ κ°μ λμ νλ κ³ λ£¨ν΄μ μ‘μ μκ° λκ³ νλνλ건 μμ μκ° λλ€. κ·Έλ¦¬κ³ μμ μλ μ‘μ μκ° κ°μ 보λΌλκΉμ§ μλμΌλ‘ λΈλν΄μ-λκΈ°νλ₯Ό νλ€.
μμ μμ μ‘μ μλ 무쑰건 λμμ΄ λμ΄μΌ νλ€. μλλ©΄ μλ¬λ₯Ό λμ§λ€.
κ·Έλ¦¬κ³ νλμ΄ λμ§ λ°μ΄ν°λ νλλ§ λ°λλ€. λ§μ½ μμ μκ° μ¬λΏμΈλ° νλμ΄ λμ§λ©΄ νλλ§ λ°κ³ λλ¨Έμ§ μμ μλ μ λΆ λΈλμνλ‘ μ μ§λλ€.
μλλ κ³ λ£¨ν΄ λμ΄μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κ°λ¨ν μ½λλ€.


μμμ κ³ λ£¨ν΄κ°μλ§ μ±λ μ‘μμ μ νμ§λ§ mainλ νλμ main κ³ λ£¨ν΄μ΄λΌ ν μ μμΌλ―λ‘.. μ‘μ μ΄λ μμ μ ν μμλ€.


@μ±λ μμ μ μ¬μ€ 2κ°μ κ°μ 리ν΄νλ€.
(κ°, μμ μ±κ³΅μ¬λΆ)μ ννλ€. μ±λμ΄ λ«νμ λμ΄μ κ°μ΄ μ€μ§ μλλ€λ©΄ λλ²μ§Έ λ°νκ°μΌλ‘ falseκ° λ€μ΄μ¨λ€.
@μ±λ λ³μλ close λ΄μ₯ν¨μλ‘ λ«μ μ μλ€.
λ«ν μ±λμ μ‘μ μ λΆκ°λ₯νμ§λ§ μμ μ κ°λ₯νλ€.
@μ±λ λ³μλ rangeμ μν λμμ΄ λ μ μλ€.
range μ±λ λ°λ³΅λ¬Έμ μ±λμ΄ λ«νλκΉμ§ 무ν루νλ₯Ό λλ€.
@selectλ¬Έμ΄λΌλ κ² μλ€. νΉμ κ³ λ£¨ν΄μμ μ¬λ¬κ°μ μ±λμ μμ ν κ²½μ° μ¬μ©νλ€.
caseμ μ±λ μμ λ¬Έμ μ¬λ¬κ° λ€λλ°, μμ μ΄ μ€κΈΈ κΈ°λ€λ¦¬λ€κ° κ°μ₯ λ¨Όμ μμ λ μ±λ caseλ₯Ό μ€ννκ³ μ’
λ£λλ€.
defaultκ° μλ€λ©΄ μμ μ΄ μ€κΈΈ κΈ°λ€λ¦¬μ§ μκ³ λ°λ‘ κ·Έκ² μ€νλλ€.
select {
case <-μ±λ1: ...
case <-μ±λ2: ...
case λ³μ3:= <-μ±λ3: ...
}
http://golang.site/go/article/22-Go-%EC%B1%84%EB%84%90