익명 구조체와 빈 구조체
Go에서 익명 구조체는 이름이 없는 구조체입니다. 일반적으로 임시 또는 단기 데이터 구조를 만드는 데 사용됩니다. 빈 구조체에는 필드가 없으며 0바이트의 메모리를 차지합니다.
[첫 번째 질문]
다음 코드는 익명 구조체를 사용하여 전사가 전투를 마쳤음을 나타냅니다. :
done := make(chan struct{})
struct{} 유형은 빈 구조체를 나타냅니다. 여기서는 구조체에 데이터를 저장할 필요가 없기 때문에 사용됩니다. 우리는 전사가 전투를 마쳤다는 신호를 보내는 데만 사용하고 싶습니다.
다음 줄은 빈 구조체를 완료 채널로 보냅니다.
done <- struct{}{}
<이므로 추가 괄호가 필요합니다. ; > 연산자는 <- 연산자보다 우선순위가 낮습니다. 대괄호가 없으면 코드는 done <- (struct{}) {}로 해석되어 빈 구조체 자체가 아닌 빈 구조체에 대한 포인터를 보냅니다.
[두 번째 질문 ]
다음 줄은 모든 전사가 전투를 마칠 때까지 기다립니다.
for _ = range langs { <-done }
이 줄 완료 채널에서 수신하기 위해 범위 표현식을 사용합니다. _ 문자는 수신된 값에 관심이 없음을 나타내는 자리 표시자 변수로 사용됩니다. 이는 전사가 보낸 빈 구조체에 데이터가 포함되어 있지 않기 때문입니다.
프로그램이 계속하기 전에 모든 전사가 전투를 마칠 때까지 기다릴 수 있도록 하기 때문에 범위 표현이 필요합니다. 그렇지 않으면 프로그램은 계속하기 전에 첫 번째 전사가 전투를 마칠 때까지만 기다릴 것입니다.
위 내용은 Go에서 익명 구조체와 빈 구조체는 무엇이며 신호 전달에 어떻게 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!