일부 오픈소스 Go 프로젝트를 읽고 있는데 다음과 같이 구현된 코드가 많이 있는 것을 발견했습니다.
으아아아위 코드에서 내부 함수 go func...(id, s)
는 불필요해 보입니다. 즉, 다음 코드를 작성하면 어떤 차이가 있을까요?
for id, s := range subscribers { go func(id string, s *hellosaidsubscriber) { select { case <-s.stop: unsubscribe <- id return default: } select { case <-s.stop: unsubscribe <- id case s.events <- e: case <-time.after(time.second): } }(id, s) }
첫 번째 예에서 이것은 익명 함수입니다. go
키워드는 Go의 동시성 모드인 goroutine 역할을 합니다. 따라서 익명 함수(goroutine) 내부의 코드가 동시에 처리됩니다.
두 번째 예에서 고루틴을 제외한다는 것은 코드가 순차적으로 실행된다는 의미입니다.
익명 함수는 이름이 포함되지 않은 함수입니다. 인라인 함수를 만들고 싶을 때 자주 사용됩니다. 폐쇄를 형성할 수 있습니다. 익명 함수는 함수 리터럴이라고도 합니다.
위 내용은 사람들은 왜 golang에서 내장 함수를 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!