>백엔드 개발 >Golang >메소드 매개변수를 함수에 전달

메소드 매개변수를 함수에 전달

王林
王林앞으로
2024-02-14 08:21:081046검색

메소드 매개변수를 함수에 전달

PHP 개발에서는 메서드 매개변수를 함수에 전달하는 것이 일반적인 요구 사항입니다. 매개변수를 함수에 전달함으로써 함수 내부의 매개변수를 조작하고 처리할 수 있으므로 보다 유연하고 재사용 가능한 코드를 얻을 수 있습니다. 이 기사에서 PHP 편집자 Baicao는 메소드 매개변수를 함수에 올바르게 전달하는 방법을 소개하고 개발자가 이 중요한 프로그래밍 개념을 더 잘 이해하고 적용하는 데 도움이 되는 몇 가지 실용적인 팁과 예방 조치를 공유합니다. 당신이 초보자이건 숙련된 개발자이건 이 글은 귀중한 참고자료와 지침을 제공할 것입니다.

질문 내용

이것이 고에서 가능한지 궁금합니다. 여러 가지 방법을 사용하는 유형이 있습니다. 메소드 매개변수를 취하고 해당 유형에 대해 이를 호출하는 함수를 갖는 것이 가능합니까?

다음은 제가 원하는 것의 작은 예입니다:

으아악

go는 전달된 메소드 이름으로 대체하는 대신 foo 有一个名为 foo() 유형의 메소드를 고려합니다.

해결 방법

예, 가능합니다. 2(3) 가지 선택이 있습니다:

사양: 메서드 표현

표현foo.a 产生一个与 a 等效的函数,但具有显式接收器作为其第一个参数;它有签名 func(f foo).

으아악

이 메소드 수신자는 명시적입니다. 메소드 이름(및 해당 유형)을 bar(),并且在调用它时,您必须传递实际的接收者:m(f)에 전달하기만 하면 됩니다.

예상대로 출력(go 놀이터에서 시도):

으아악

사양: 메서드 값

만약 ffoo 类型的值,则表达式 f.a 生成 func() 类型的函数值,其隐式接收者值为 f.

으아악

여기서 메소드 수신자는 암시적이며 bar() 的函数值一起保存,因此无需显式指定即可调用它:m()에 전달되는 것과 동일합니다.

출력은 동일합니다(go 놀이터에서 사용해 보세요).

(완전성을 위해: 반영)

이전 솔루션보다 낮지만(성능 및 "보안" 측면에서) 메서드 이름을 string 值传递,然后使用 reflect 패키지로 전달하여 해당 이름으로 메서드를 호출할 수 있습니다. 다음과 같이 보일 수 있습니다:

으아악

go 놀이터에서 사용해 보세요.

위 내용은 메소드 매개변수를 함수에 전달의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제