inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Khóa học cơ bản nhập môn về lập trình ngôn ngữ GO nhanh chóng và dễ dàng

Cơ bản về kênh

2개씩 체크가 되는 이유가 궁금합니다.

328

wofjeiong2ewg23

15 câu hỏi đã được viết

0

go func() {
   for i := 0; i < 5; i++ {
      fmt.Println("check : ", i)
      ch <- true
   }
   close(ch) // 5회 채널에 값 전송 후 채널 닫기
}()

for i := range ch { // 채널에서 값을 꺼내온다. 닫힐 때 까지
   fmt.Println("ex1 : ", i)
}

출력

check : 0

check : 1

ex1 : true

ex1 : true

check : 2

check : 3

ex1 : true

ex1 : true

check : 4

ex1 : true

 

위 코드가 아래와 같이 출력됩니다. 왜 2개씩 출력이 되는 걸까요?.. 제 생각에는 check가 0부터 하나씩 출력이 되야 할 것 같은데.. ch := make(chan bool, 2) 이렇게 버퍼(?)를 추가해 주면 3개 3을 추가하면 4개씩 늘어나네요.

기본이 2개씩 모아서 실행을 하고 추가되는 값 만큼 처리를 한다고 생각하면 될까요?

+) 개인적으로 강사님 의견이 궁금한 부분인데요.
restAPI를 Java-Spring 대신 Go로 짠다고 했을 때 비동기가 중요한 작업이라고 하면 Go가 더 괜찮은 선택이 될 수 있을까요?

go

Câu trả lời 1

1

niceman

네 맞습니다.

print에 의해 두 번 출력 되는걸로 보여지네요!

+)

비동기 작업에서도 Go 뿐만 아니라 다른 언어들도 많다고 생각이 드네요.

물론, Go가 타언어 대비 런타임에서 가장 빠른 속도와 편한 배포 방법 등이 장점이 될 것 같습니다.

언어를 선택하는건 구현하는 사람의 숙련도에 달려있다고 생각이 드네요~

Go로 충분히 원하시는 것들을 구현하실 수 있으니 사용하기 편한 언어로 하셔도

최근에는 괜찮을 것 같습니다.(그만큼 하드웨어 퍼포먼스가 좋아서요!)

 

고 인터페이스 관련

0

69

2

Join함수 사용이유가 궁금합니다

0

54

1

vscode 설정

0

126

2

arm64

0

202

2

undefined 에러 : UndeclaredImportedName

0

343

1

godoc 에러 관련

0

206

1

package is not in std 오류

0

986

1

맵 예제 코드가 바이러스 검사에 걸려요

0

234

1

for 반복문에서 break와 continue 차이점

0

224

1

후치연산 관련 질문입니다.

0

197

1

package관리에 질문이 있습니다.

0

282

1

go channel 에제에서 질문이 있습니다.

0

193

1

golang 질문

0

310

1

재귀 함수 관련하여 질문이 있습니다.

0

346

1

atom 서비스 종료 관련

0

403

1

vscode 환경설정 업데이트 부탁드립니다

1

405

2

waitGroup.Done을 지연 시키는 방식

0

450

1

첫 번째 예제 질문있습니다.

0

264

1

go 표준 코드 컨벤션이 있나요?

0

825

1

slice에서 make 궁금한 게 있습니다.

1

262

1

import 관리는 어떻게 하나요?

0

317

1

개발환경설정 질문드립니다.

0

486

1

이것도 closure인가요?

0

238

1

짧은 선언으로 변수 여러개를 만들때

0

241

1