golang 메소드에 대한 자세한 설명

PHPz
풀어 주다: 2023-04-25 15:32:20
원래의
674명이 탐색했습니다.

새로운 고성능 프로그래밍 언어인 Go 언어(Golang)는 최근 몇 년 동안 개발 분야에서 점점 더 많은 관심과 지원을 받고 있습니다. 그중 Go 메소드는 Go 언어의 중요한 기능으로, 코드를 보다 편리하게 구성할 수 있을 뿐만 아니라 더 나은 코드 재사용 및 유지 관리도 가능합니다. 다음은 Go 메소드의 개념, 유형, 정의 및 사용법을 각각 소개합니다.

1. 메소드의 개념

Go 언어에서 메소드는 특정 유형과 연관된 함수로, 해당 유형에서 호출될 수 있습니다. 메소드는 일반적으로 수신자 매개변수로 정의됩니다. 여기서 수신자 매개변수는 메소드가 호출되는 유형을 나타냅니다. 이 수신자 매개변수를 통해 메서드는 해당 유형의 모든 속성과 메서드에 액세스하여 데이터에 대한 작업 기능을 구현할 수 있습니다.

예를 들어 Person 구조 유형의 경우 문자열 유형을 반환하는 SayHello 메서드를 정의할 수 있습니다.

type Person struct {

name string
age  int
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

func (p Person) SayHello() string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

위 코드에서 SayHello 메소드는 수신자 p Person을 정의하고 메소드에서 수신자의 속성인 name과 age를 사용하여 최종적으로 문자열 형식의 Greeting을 반환합니다. 이 메소드를 정의한 후에는 Person 유형의 인스턴스를 통해 호출할 수 있습니다.

2. 메소드 유형

Go 메소드는 값 수신자와 포인터 수신자의 두 가지 유형으로 나눌 수 있습니다.

값 유형 수신자(즉, 인스턴스 값의 복사본)는 일반적으로 인스턴스의 내부 상태를 변경할 필요가 없는 시나리오에서 사용됩니다.

func (p Person) SayHello() string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

포인터 유형 수신기(즉, 인스턴스의 포인터)는 일반적으로 인스턴스의 내부 상태를 변경해야 하는 시나리오에서 사용됩니다.

func (p *Person) ImproveAge( ) {

p.age++
로그인 후 복사
로그인 후 복사

}

위 코드에서는 UploadAge 메소드가 정의되어 있습니다. 수신자 p Person이 생성되고 해당 메소드에서 수신자의 age 속성이 수정됩니다. 포인터 유형 수신자는 유형 또는 주소가 필요한 유형에 대한 포인터를 수신할 수 있습니다. 이 형식의 메소드 선언에는 유형 이름 앞에 ""가 필요합니다. 여기서 "*"는 포인터 유형을 의미합니다.

3. 메소드 정의

Go 메소드를 정의하는 방법에는 두 가지가 있습니다. 하나는 유형이 선언될 때 메소드를 정의하는 것이고, 다른 하나는 유형 외부의 함수를 통해 메소드를 정의하는 것입니다.

타입 선언 시 메소드 정의 방법은 다음과 같습니다.

type Person struct {

name string
age  int
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

func(p Person) SayHello() string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

위 코드에서 , SayHello 메소드는 유형 내의 Person에 정의됩니다.

타입 외부의 함수를 통해 메소드를 정의하는 방법은 다음과 같습니다.

type Person struct {

name string
age  int
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

func (p Person) SayHello() string {

return "Hello, my name is " + p.name + ", I'm " + strconv.Itoa(p.age) + " years old."
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

func (p *Person) 증가Age( ) {

p.age++
로그인 후 복사
로그인 후 복사

}

위 코드에서 함수를 통해 ImproveAge 메소드를 정의하고 Person 유형 외부에 추가했습니다.

4. 메소드 사용

메소드는 다른 함수와 유사하게 사용되며 다음 두 가지 방법으로 호출할 수 있습니다.

1 유형의 인스턴스를 통해 호출됩니다.

p := Person{name: "Tom", age: 18}
p.SayHello() // 안녕하세요, 제 이름은 Tom입니다. 저는 18살입니다.

2.

pp := &Person{name: "Jack", age: 20}
pp.IncreaseAge() // pp의 age 속성을 수정합니다. 이때는 pp.age=21입니다.

위는 Go를 사용하여 개발하는 개발자의 경우 구조 또는 인터페이스 유형을 통해 Go 메소드를 적용하면 코드 재사용 및 유지 관리를 더 잘 수행할 수 있습니다.

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

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