>백엔드 개발 >Golang >Go에서 익명 구조체와 빈 구조체는 무엇이며 신호 전달에 어떻게 사용됩니까?

Go에서 익명 구조체와 빈 구조체는 무엇이며 신호 전달에 어떻게 사용됩니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-23 22:14:15788검색

What are Anonymous Structs and Empty Structs in Go, and How Are They Used for Signaling?

익명 구조체와 빈 구조체

Go에서 익명 구조체는 이름이 없는 구조체입니다. 일반적으로 임시 또는 단기 데이터 구조를 만드는 데 사용됩니다. 빈 구조체에는 필드가 없으며 0바이트의 메모리를 차지합니다.

[첫 번째 질문]

다음 코드는 익명 구조체를 사용하여 전사가 전투를 마쳤음을 나타냅니다. :

done := make(chan struct{})

struct{} 유형은 빈 구조체를 나타냅니다. 여기서는 구조체에 데이터를 저장할 필요가 없기 때문에 사용됩니다. 우리는 전사가 전투를 마쳤다는 신호를 보내는 데만 사용하고 싶습니다.

다음 줄은 빈 구조체를 완료 채널로 보냅니다.

done <- struct{}{}

<이므로 추가 괄호가 필요합니다. ; > 연산자는 <- 연산자보다 우선순위가 낮습니다. 대괄호가 없으면 코드는 done <- (struct{}) {}로 해석되어 빈 구조체 자체가 아닌 빈 구조체에 대한 포인터를 보냅니다.

[두 번째 질문 ]

다음 줄은 모든 전사가 전투를 마칠 때까지 기다립니다.

for _ = range langs { <-done }

이 줄 완료 채널에서 수신하기 위해 범위 표현식을 사용합니다. _ 문자는 수신된 값에 관심이 없음을 나타내는 자리 표시자 변수로 사용됩니다. 이는 전사가 보낸 빈 구조체에 데이터가 포함되어 있지 않기 때문입니다.

프로그램이 계속하기 전에 모든 전사가 전투를 마칠 때까지 기다릴 수 있도록 하기 때문에 범위 표현이 필요합니다. 그렇지 않으면 프로그램은 계속하기 전에 첫 번째 전사가 전투를 마칠 때까지만 기다릴 것입니다.

위 내용은 Go에서 익명 구조체와 빈 구조체는 무엇이며 신호 전달에 어떻게 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.