Golang은 효율성, 단순성, 학습 및 사용의 용이성으로 인해 많은 개발자들의 사랑을 받는 프로그래밍 언어입니다. Golang에서 메소드는 구조체 유형에 대한 작업을 허용하는 함수입니다.
이 글에서는 Golang 메서드 사용을 더 잘 익히는 데 도움이 되도록 메서드 정의, 호출, 전달, 인터페이스 등에 대한 세부 정보를 포함하여 Golang 메서드를 소개합니다.
1. 메소드 정의
Golang에서 메소드는 구조 유형과 연관된 특수한 유형의 함수입니다. 즉, 메소드의 수신자가 특정 구조 유형을 가리켜야 합니다. 메소드 정의의 기본 구문은 다음과 같습니다.
func (r ReceiverType) methodName(parameterList) (resultList) {
// 方法体
}
이 중 ReceiverType은 메소드 수신자의 유형을 나타내며 다음을 포함하여 모든 유형이 가능합니다. 포인터 유형, ReceiverType이 포인터 유형인 경우 메소드가 호출될 때 자동으로 역참조됩니다. methodName은 메소드의 이름을 참조하며, 매개변수가 필요하지 않은 경우 생략할 수 있습니다. resultList는 메소드의 반환 값 목록을 참조합니다. 반환 값이 필요하지 않으면 생략할 수 있습니다.
예를 들어, Person 유형에 대한 포인터를 받고 매개변수 및 반환 값을 전달할 필요가 없는 Print라는 메서드를 정의할 수 있습니다.
type Person struct {
name string age int
}
func (p *Person) Print() {
fmt.Printf("Name: %s, Age: %d
", p.name, p.age)
}
위의 예에서 Print 메소드는 Person 유형에 속합니다. 이는 Person 유형에 대한 포인터에 바인딩되어 있으므로 다음과 같이 될 수 있습니다.
2. 메소드 호출
Golang에서 메소드 호출은 함수 호출과 매우 유사합니다. 예를 들어 함수 이름 앞에만 추가하면 됩니다. Person 유형을 지정하고 출력을 위해 Print 메소드를 호출합니다.
func main() {
p := &Person{ name: "Tom", age: 18, } p.Print()
}
위의 예에서는 Person 유형을 가리키는 포인터 p를 만들고 출력을 위해 Print 메소드를 호출했습니다. . 주의 사항. 메소드를 호출할 때 명시적으로 수신자를 전달할 필요가 없습니다. Golang은 자동으로 호출자를 수신자로 변환합니다.
3. 메소드 전달
Golang에서는 메소드도 함수처럼 전달할 수 있습니다. 예를 들어, 위의 Print 메소드는 함수로 캡슐화될 수 있습니다:
func PrintPerson(p *Person) {
p.Print()
}
그런 다음 PrintPerson 함수를 다른 함수에 매개변수로 전달할 수 있습니다:
func ProcessPerson( f func(* Person)) {
p := &Person{ name: "Tom", age: 18, } f(p)
}
마지막으로 PrintPerson 함수를 매개변수로 전달하여 ProcessPerson 함수를 호출할 수 있습니다.
func main() {
ProcessPerson(PrintPerson)
}
위의 예에서 ProcessPerson 함수는 함수를 매개변수로 받고, Person 유형의 인스턴스를 매개변수로 함수에 전달합니다. PrintPerson 함수는 Person 유형에 대한 포인터를 매개변수로 받고 함수 유형을 따르므로 PrintPerson 함수는 다음과 같습니다.
4. 메소드 인터페이스
이러한 메소드를 구현하는 모든 유형은 매우 중요한 개념입니다. 인터페이스. Golang에서는 메소드를 사용하여 인터페이스를 구현할 수 있습니다.
예를 들어 String이라는 메소드를 정의하여 구조를 문자열로 변환할 수 있습니다.
type Stringer 인터페이스 {
String() string
}
그런 다음 Person 유형에 String 메소드를 정의하여 Person을 문자열로 변환할 수 있습니다.
func (p *Person) String() string {
return fmt.Sprintf("Name: %s, Age: %d", p.name, p.age)
}
마지막으로 Person 유형은 Stringer를 구현할 수 있습니다. 인터페이스를 사용하고 출력을 위해 fmt 패키지의 Println 함수를 사용합니다.
func main() {
p := &Person{ name: "Tom", age: 18, } fmt.Println(p)
}
위 예에서 Person 유형은 Stringer 인터페이스를 구현하고 이를 String으로 변환하여 출력합니다.
요약
이 글에서는 Golang 메소드의 정의, 호출, 전달, 인터페이스 등에 대해 자세히 소개합니다. 독자들이 Golang 메소드 사용을 더 잘 이해하는 데 도움이 되기를 바랍니다. 메소드를 사용할 때에는 수신자의 유형, 메소드의 정의, 메소드의 호출 메소드 및 전달 메소드 등 세부사항에 주의해야 합니다. 이러한 세부 사항을 숙지해야만 Golang 방법의 장점을 최대한 활용하고 코드의 효율성과 유지 관리성을 향상시킬 수 있습니다.
위 내용은 golang 메소드 매뉴얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!