PHP 편집자 Zimo가 답변해 드립니다. 왜 golang에서는 함수의 주소를 얻을 수 없는데 함수 값은 얻을 수 있나요? Golang에서는 함수값을 호출할 수 있는 타입이기 때문에 함수값을 얻을 수 있습니다. 함수의 주소는 얻을 수 없으며 이는 Golang의 설계 결정에 따라 결정됩니다. Golang의 함수는 일급 시민이며 다른 유형처럼 할당, 전달 및 호출될 수 있습니다. 따라서 함수값을 얻어서 다른 함수에 전달할 수 있다. 하지만 Golang의 함수 구현은 함수가 생성될 때마다 새로운 클로저 인스턴스가 생성되므로 함수의 주소가 고정되어 있지 않으며 얻을 수 없습니다. 이러한 설계는 기능의 독립성과 안전성을 보장하는 동시에 메모리 관리 및 가비지 수집 프로세스를 단순화할 수 있습니다. 그래서 함수의 주소를 얻을 수는 없더라도 함수 값을 얻어서 호출할 수는 있습니다.
golang에서 함수를 선언한다고 가정해 보겠습니다.
으아아아함수 주소를 사용하여 함수 포인터를 선언하면 오류가 발생합니다
으아아아"잘못된 작업: myfunc(func() 유형의 값) 주소를 가져올 수 없습니다."
하지만 함수값에 할당하면 주소를 얻을 수 있어요
으아아아"functionvalue"는 함수 이름 "myfunc"를 사용하는 것과 다른가요? 둘 다 같은 유형 아닌가요? (Function())
myfunc
是一个函数。 functionvalue
은 함수 변수로, 함수를 가리키는 변수이자 클로저이기도 합니다. 예:
위는 functionvalue
是一个函数变量,其闭包包含对 x
의 인용문입니다.
가 myfunc
这样的命名函数没有与之关联的闭包。像 functionvalue
这样的函数变量有一个闭包。当您将其分配给 myfunc
처럼 보이면 클로저가 비어 있는 것입니다. 위와 같이 할당하면 null이 아닙니다. 따라서 함수를 호출하는 메커니즘은 함수 변수를 호출하는 것과 다릅니다.
함수 변수의 주소는 변수의 주소입니다.
위 내용은 왜 golang에서는 함수의 주소를 얻을 수 없는데 함수 값은 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!