>  기사  >  백엔드 개발  >  Golang의 다른 모듈에서 함수 재정의

Golang의 다른 모듈에서 함수 재정의

王林
王林앞으로
2024-02-14 18:15:10576검색

从 Golang 中的另一个模块覆盖函数

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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