golang에서 캡슐화된 모델의 공통 기능을 구현하는 방법은 무엇입니까?

PHPz
풀어 주다: 2024-02-11 23:42:09
앞으로
1102명이 탐색했습니다.

golang에서 캡슐화된 모델의 공통 기능을 구현하는 방법은 무엇입니까?

Golang에서는 구조와 메소드를 사용하여 캡슐화된 모델의 공통 기능을 구현할 수 있습니다. 구조는 관련 데이터 및 메소드를 캡슐화하는 데 사용할 수 있는 사용자 정의 데이터 유형입니다. 메소드는 구조와 연관된 함수이며 구조의 멤버는 메소드 내에서 액세스하고 조작할 수 있습니다. 함수를 구조로 정의함으로써 함수를 특정 구조와 연관시켜 캡슐화된 모델에서 공통 작업을 구현할 수 있습니다. Golang에서는 수신기를 사용하여 메서드가 속한 구조를 지정할 수 있습니다. 수신기는 값 유형 또는 포인터 유형일 수 있으며 필요에 따라 적절한 수신기 유형을 선택합니다. 구조 방법을 정의함으로써 캡슐화된 모델에서 필드 값 가져오기 또는 설정, 특정 작업 수행 등과 같은 일반적인 작업을 구현할 수 있습니다. 이러한 방식으로 구조의 메서드를 호출하여 캡슐화된 데이터에 액세스하고 작동할 수 있으므로 보다 유연하고 재사용 가능한 코드를 얻을 수 있습니다.

질문 내용

모델로 2개의 패키지가 있습니다:

카테고리:

으아악

선생님:

으아악

따라서 readdata 함수가 반복적으로 실행되는 것을 볼 수 있습니다. 이제 class.readdata()teacher.readdata()를 사용하여 채널에서 데이터를 호출할 수 있습니다.

두 패키지에서 사용할 readdata() 함수를 작성하는 방법은 무엇입니까?

다음과 같은 제네릭을 사용하여 기본 패키지를 만들려고 했습니다.

으아악

찾을 수 없습니다m.models,我的意思是teachers.teachersclasses.classes사용할 수 없습니다

이 경우 어떻게 해야 하는지 알려주세요

해결 방법

제네릭을 사용하세요(go 1.18에 도입됨). json에서 디코딩되어 채널에 전달될 값을 나타내는 매개변수 유형을 사용하여 readdata() 함수를 만듭니다.

참고: 버그를 확인하고 보고해야 합니다(base.readjson()의 버그 포함).

으아악

통화 예:

으아악

읽은 값의 개수를 반환하는 것은 중복되어야 한다는 점에 유의하세요. 반환된 채널을 올바르게 닫았으므로 호출자는 반환된 채널에서 for range를 사용할 수 있으며, 이는 전송된 모든 값을 올바르게 수신한 다음 종료합니다.

또한 채널로 돌아갈 때 모든 값이 준비(디코딩)되어 있으므로 이 동시성은 중복되어 효율성만 떨어뜨린다는 점에 유의하세요. 디코딩된 값 조각이 있으므로 이를 반환하고 호출자가 이를 처리할 방법(동시 또는 비동시)을 선택하도록 합니다.

따라서 readdata()는 다음과 같아야 합니다:

으아악

또한 입력 json 객체에 필드가 하나만 있는 경우 다음과 같이 맵에서 값을 가져오기 위해 fieldname,您可以从解码后的 m를 전달할 필요가 없습니다.

으아악

그럼 호출하는 방법은 간단합니다.

으아악

위 내용은 golang에서 캡슐화된 모델의 공통 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿