golang의 메소드 선언 및 사용에 대한 간략한 분석

PHPz
풀어 주다: 2023-04-10 15:35:51
원래의
517명이 탐색했습니다.

Golang은 Google이 개발하여 2009년에 출시한 오픈 소스 프로그래밍 언어입니다. 단순성, 명확성, 효율성 및 병렬성의 특성을 가지며 고성능 웹 애플리케이션, 네트워크 서비스 등을 구축하는 데 널리 사용됩니다. 그 중 메소드(Method)는 Golang에서 객체지향 프로그래밍을 지원하는 중요한 개념 중 하나입니다.

Golang의 메소드는 수신자에게 작용하는 함수입니다. 이는 특정 유형의 객체에 대해 작동하는 데 사용되는 특정 유형의 함수로 생각할 수 있습니다. Golang의 메소드 선언과 사용법을 소개하겠습니다.

Golang 메소드 선언 형식은 다음과 같습니다.

func (receiver_name ReceiverType) MethodName(parameter_list) (return_type_list) {
    // method body
}
로그인 후 복사

여기서, receive_name은 수신자의 이름, ReceiverType은 수신자의 유형, paramator_list는 매개변수 목록, return_type_list는 반환 값 목록입니다. 메소드 이름, 매개변수 목록, 반환값 목록의 형식은 일반 함수와 동일합니다.

Golang에서는 수신자를 설정하는 방법에는 값 수신자와 포인터 수신자의 두 가지 방법이 있습니다.

값 수신자의 선언 형식은 다음과 같습니다.

func (v ValueTypeName) MethodName(parameter_list) (return_type_list) {
    // method body
}
로그인 후 복사

포인터 수신자의 선언 형식은 다음과 같습니다.

func (v *ValueTypeName) MethodName(parameter_list) (return_type_list) {
    // method body
}
로그인 후 복사

여기서 ValueTypeName은 수신자의 유형 이름입니다. 값 수신기와 포인터 수신기는 사용 시 서로 다른 특성을 갖습니다. 값 수신자가 수신 객체를 수정해도 원본 객체에는 영향을 미치지 않지만 포인터 수신자는 원본 객체의 값을 수정할 수 있습니다.

예제는 다음과 같습니다.

type Person struct {
    name string
    age  int
}

func (p Person) sayHello() {
    fmt.Println("Hello, my name is", p.name)
}

func (p *Person) setAge(newAge int) {
    p.age = newAge
}

func main() {
    p1 := Person{"John", 25}
    p1.sayHello() // Hello, my name is John

    p1.setAge(30)
    fmt.Println(p1.age) // 输出:30
}
로그인 후 복사

이 예에서는 Person 구조에 두 개의 메소드(sayHello 및 setAge)가 정의되어 있습니다. sayHello는 단순히 이름을 출력하는 값 수신기를 사용하고, setAge는 수신기의 age 속성을 수정할 수 있는 포인터 수신기를 사용합니다.

값 수신기와 포인터 수신기를 선택할 때 몇 가지 세부 사항에 주의해야 합니다. 주요 차이점 중 하나는 수신기의 값을 수정해야 하는 경우 포인터 수신기를 사용해야 하며, 그렇지 않으면 메서드가 실행되면 값이 변경된다는 것입니다. 수신자의 유언장은 폐기되며 원래 값에 영향을 주지 않습니다.

일반적으로 Golang의 방식은 매우 편리하고 유연한 객체지향 프로그래밍 방식입니다. 메소드를 사용하여 유형을 조작하고 편리한 기능을 구현할 수 있습니다. 값 수신기를 사용할지 포인터 수신기를 사용할지는 특정 요구 사항에 따라 선택해야 합니다. 나는 당신이 방법의 사용법을 익히면 Golang을 더 잘 활용할 수 있다고 믿습니다.

위 내용은 golang의 메소드 선언 및 사용에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!