php 편집기 Xigua는 흥미로운 주제인 Golang의 다른 모듈에서 함수를 재정의하는 방법을 소개하기 위해 왔습니다. Golang에서 모듈식 설계는 코드를 더 쉽게 유지 관리하고 확장할 수 있게 해주는 일반적인 프로그래밍 패턴입니다. 함수 재정의는 한 모듈의 함수를 다른 모듈의 함수를 재정의하여 사용자 정의된 동작을 달성할 수 있는 강력한 기능입니다. 이 문서에서는 재정의 기능을 사용하는 방법과 그 이점 및 고려 사항을 자세히 설명합니다. 이 흥미로운 주제를 함께 살펴보겠습니다!
golang의 다른 모듈에서 생성된 함수를 어떻게 재정의하나요?
모듈 a
모듈에는 newpersonapiservice 함수가 있으며 전체 코드는 다음과 같습니다.
으아아아모듈 b
별도의 모듈에서 이 newpersonapiservice를 재정의하고 싶습니다.
다음을 수행하여 다른 모듈에서 이 함수를 호출할 수 있습니다.
으아아아그러나 함수를 재정의하려고 하면 컴파일 오류가 발생하고 openapi 유형을 확인할 수 없습니다. 제가 하려고 하는 작업은 다음과 같습니다.
으아아아다음은 컴파일 오류 사진입니다
기타 정보: 나는 모듈 b가 모듈 a를 올바르게 참조한다고 믿습니다.
모듈 a의 go.mod 파일 내용은 다음과 같습니다.
으아아아모듈 b의 go.mod 파일 내용은 다음과 같습니다.
package openapi import ( "context" "errors" "net/http" ) // personapiservice is a service that implements the logic for the personapiservicer // this service should implement the business logic for every endpoint for the personapi api. // include any external packages or services that will be required by this service. type personapiservice struct { } // newpersonapiservice creates a default api service func newpersonapiservice() personapiservicer { return &personapiservice{} } // showperson - detail func (s *personapiservice) showperson(ctx context.context) (implresponse, error) { // todo - update showperson with the required logic for this service method. // add api_person_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. //todo: uncomment the next line to return response response(200, person{}) or use other options such as http.ok ... //return response(200, person{}), nil //todo: uncomment the next line to return response response(0, error{}) or use other options such as http.ok ... //return response(0, error{}), nil return response(http.statusnotimplemented, nil), errors.new("showperson method not implemented") }
해결 방법은 다른 모듈에서 showperson 메서드를 구현하는 것입니다. personapiservicer 인터페이스를 구현하는 새 유형을 만들고 자체 showperson 메서드 구현을 제공해야 합니다.
모듈 b에서 이 코드를 실행하면 작동하며 모듈 a에 정의된 API 호출의 응답을 변경할 수 있습니다.
으아아아위 내용은 Golang의 다른 모듈에서 함수 재정의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!