php 편집기 Baicao는 Go 언어의 필수 인터페이스 규칙을 소개합니다. 즉, 메서드에 포인터 수신기가 있는 유형만 인터페이스 요구 사항을 충족할 수 있습니다. Go 언어는 인터페이스를 통해 다형성을 구현하는 정적인 유형의 프로그래밍 언어입니다. 인터페이스를 정의할 때 메소드의 수신자 유형(값 유형 또는 포인터 유형)을 지정할 수 있습니다. 그러나 필수 인터페이스 규칙을 사용하면 메서드에 포인터 수신기가 있는 유형만 인터페이스 요구 사항을 충족할 수 있습니다. 이는 포인터 유형이 값의 내용을 수정할 수 있지만 값 유형은 수정할 수 없기 때문입니다. 이 규칙은 값을 조작할 때 인터페이스 메서드가 예측할 수 없는 동작을 일으키지 않도록 보장합니다. 이 규칙을 이해함으로써 우리는 Go 언어의 인터페이스 사용과 디자인을 더 잘 이해할 수 있습니다.
저는 json http 요청에 대한 응답을 생성하기 위해 구조를 연결하는 일반적인 방법을 찾기 위해 유형 매개변수를 사용하여 몇 가지 실험을 하고 있습니다.
method
接口有一个 setparams
구조가 구현해야 하는 메서드입니다. 구현에서 포인터 수신기를 사용하는 한 이는 예상대로 작동합니다.
내 질문: setparams
에 값 수신자가 있는 경우 이를 컴파일 타임 오류로 만들 수 있는 방법이 있나요?
다음 예에서는 값 수신자의 setparams
문제를 보여줍니다.
https://go.dev/play/p/eii8adkmdxe
이 작업은 수행할 수 없습니다.
코드에서 다음을 수행하는 경우:
으아악심지어t
的类型集仅包括*m
作为类型项,*m
的方法集也包括在m
上声明的方法。编译器无法检查该方法如何出现在 *m
방법도 집중합니다.
badping
上声明方法 setparam
에서 메서드가 수신기를 수정하려고 헛되이 시도하지 않도록 하는 것은 귀하의 책임입니다.
위 내용은 Go - 메소드에 포인터 수신기가 있는 유형에 의해서만 인터페이스가 충족되도록 강제하시겠습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!