GO에서 메소드는 특수 수신기 인수가있는 함수입니다. 수신기는 func
키워드와 메소드 이름 사이의 자체 인수 목록에 나타납니다. 방법은 유형과 관련되며 해당 유형의 값에 대한 작업을 수행하는 데 사용할 수 있습니다. 이 개념은 메소드가 클래스 또는 객체에 속하는 기능인 객체 지향 프로그래밍과 유사합니다. 그러나 GO에는 클래스가 없으므로 메소드는 유형에 직접 첨부됩니다.
방법을 사용하면 유형의 인스턴스에서 수행 할 수있는 동작을 정의 할 수 있습니다. 예를 들어, 구조물 필드를 업데이트하거나 구조물의 필드를 기반으로 계산을 수행하는 메소드를 정의 할 수 있습니다. 관련 기능이 작동하는 데이터와 함께 그룹화되므로 코드를보다 읽기 쉽고 구성 할 수 있습니다.
이동중인 메소드를 정의하려면 다음 구문을 사용합니다.
<code class="go">func (receiver ReceiverType) MethodName(parameters) returnType { // Method body }</code>
다음은 구성 요소의 고장입니다.
func
함수 또는 메소드 선언을 시작하는 키워드입니다.(receiver ReceiverType)
수신기를 지정합니다. ReceiverType
구조물 또는 기타 유형 일 수 있으며 receiver
메소드 내에서 수신기 매개 변수에 제공하는 이름입니다.MethodName
은 메소드의 이름입니다.parameters
함수와 유사한 메소드가 취하는 매개 변수입니다.returnType
메소드에 의해 리턴 된 값의 유형입니다. 예를 들어, Person
구조가 있고 사람의 나이를 설정하는 방법을 정의하려면 다음과 같이 할 수 있습니다.
<code class="go">type Person struct { Name string Age int } func (p *Person) SetAge(newAge int) { p.Age = newAge }</code>
이 예에서 SetAge
Person
유형의 메소드이며 Person
인스턴스의 Age
필드를 수정합니다.
이동중인 메소드와 함수의 주요 차이점은 메소드에 수신기 인수가 있고 함수는 그렇지 않다는 것입니다. 이 수신기 인수를 사용하면 메소드가 특정 유형과 연관 될 수 있으므로 해당 유형의 인스턴스에서 메소드를 호출 할 수 있습니다.
주요 차이점은 다음과 같습니다.
person.SetAge(30)
)를 사용하여 연결된 유형의 인스턴스에서 메소드가 호출됩니다. 함수는 직접 호출됩니다 (예 : SetAge(person, 30)
).instance.Method()
)은 함수를 호출하는 것과 다릅니다 ( Function(instance)
).이동 중에 방법은 거의 모든 유형과 연관 될 수 있지만 몇 가지 제한 사항이 있습니다.
기본 유형 : int
, float64
, string
등과 같은 기본 유형에서 메소드를 정의 할 수 있지만 이러한 기본 유형을 기준으로 새 유형을 먼저 정의해야합니다. 예를 들어:
<code class="go">type MyInt int func (m MyInt) Double() int { return int(m * 2) }</code>
스트러크 : 방법은 가장 일반적인 사용 사례 인 Structs와 직접 관련 될 수 있습니다.
<code class="go">type Rectangle struct { width, height float64 } func (r Rectangle) Area() float64 { return r.width * r.height }</code>
배열 및 슬라이스 : 메소드를 배열 또는 슬라이스와 직접 연결할 수는 없지만 배열 또는 슬라이스를 감싸는 유형을 만들 수있는 다음 해당 유형과 메소드를 연결할 수 있습니다.
<code class="go">type IntSlice []int func (s IntSlice) Sum() int { sum := 0 for _, v := range s { sum = v } return sum }</code>
포인터 : 포인터 유형에서 메소드를 정의 할 수 있으며, 이는 수신기의 상태를 수정하는 데 종종 유용합니다.
<code class="go">type Counter int func (c *Counter) Increment() { *c }</code>
요약하면, 방법을 광범위한 유형과 연결할 수 있지만 기본 유형이나 배열/슬라이스가있는 메소드를 사용하려면 일반적으로 새로운 유형을 정의해야합니다.
위 내용은 이동 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!