Go

Channels

Channels, buffered vs unbuffered, close, select, channels에 대한 range, nil channels

22 면접 질문·
Junior
1

Go에서 channel이란 무엇입니까?

답변

channel은 goroutine 간의 통신과 동기화를 가능하게 하는 데이터 타입입니다. 타입이 지정된 통로 역할을 하여 thread-safe한 방식으로 값을 송수신할 수 있게 합니다. 메모리를 직접 공유하는 대신 goroutine 간에 데이터를 공유하려면 channel을 사용하세요.

2

Go에서 정수형 unbuffered channel을 어떻게 생성합니까?

답변

unbuffered channel은 용량을 지정하지 않고 make(chan T)로 생성합니다. 수신자가 준비될 때까지 송신자를 차단하여 엄격한 동기화를 보장합니다. 명시적 동기화가 필요한 일대일 통신에는 unbuffered channel을 사용하세요.

3

buffered channel과 unbuffered channel의 주요 차이점은 무엇입니까?

답변

unbuffered channel은 수신자가 준비될 때까지 송신자를 차단합니다(엄격한 동기화). 반면 buffered channel은 용량에 도달할 때까지 값을 저장한 후 차단합니다. buffered channel은 goroutine을 분리하고 일부 경우 성능을 향상시키지만 동시성 문제를 가릴 수 있습니다. 동기화에는 unbuffered를, 처리량에는 buffered를 사용하세요.

4

용량이 10인 buffered channel을 어떻게 생성합니까?

5

channel에 값을 어떻게 보냅니까?

+19 면접 질문

다음 면접을 위해 Go을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기