1. 채널의 개념
- 채널은 고루틴 간의 데이터 통신을 위해 Go에서 제공하는 도구
- 데이터를 안전하게 주고받기 위해 사용되며, 고루틴 간 동기화 기능도 제공
- 채널은 특정 타입의 데이터를 전달하며, 타입 안정성을 보장
2. 채널의 기본 사용법
채널 선언
var ch chan int // int 타입의 데이터를 전달하는 채널
채널 생성
ch := make(chan int) // int 타입의 데이터를 전달하는 채널 생성
데이터 송신과 수신
1. 송신: ch <- value
- 채널에 데이터를 보냄
2. 수신: value := <- ch
- 채널로부터 데이터를 받음
3. 채널의 기본 예제
예제: 고루틴 간 데이터 전달
package main
import (
"fmt"
)
func sender(ch chan int) {
ch <- 42 // 데이터를 채널로 보냄
}
func main() {
ch := make(chan int) // 채널 생성
go sender(ch) // 고루틴 실행
value := <-ch // 채널에서 데이터 수신
fmt.Println("Received:", value)
}
출력 결과
Received: 42
동작 설명
1. main 함수에서 채널을 생성하고 고루틴(sender)을 실행
2. sender 고루틴에서 42를 채널에 보냄
3. main 함수는 채널로부터 값을 받아 출력
4. 채널의 특징
1. 동기화
- 채널은 송신자와 수신자가 준비될 때까지 대기
- 이는 데이터의 일관성을 보장
2. 타입 안정성
- 선언된 데이터 타입만 전송 가능
3. 블로킹
- 채널에서 데이터를 송신하거나 수신하는 동작은 기본적으로 블로킹 방식
- 즉, 송신자는 수신자가 준비될 때까지 기다림
'프로그래밍 > Go' 카테고리의 다른 글
[Go] 고루틴과 채널이 이해가 힘들때 (0) | 2024.11.25 |
---|---|
[Go] 채널 Channel 심화 (1) | 2024.11.23 |
[Go] 고루틴 Goroutine (1) | 2024.11.23 |
[Go] 인터페이스 interface (0) | 2024.11.23 |
[Go] 구조체 (Struct) (0) | 2024.11.22 |