Golang은 최신 고성능 프로그래밍 언어입니다. 고유한 데이터 유형 구조체(구조)는 이 언어에서 가장 중요한 구성 요소 중 하나입니다. 뿐만 아니라 Golang에서는 구조가 메서드 정의도 지원하므로 이 기사에서는 golang 구조체 메서드에 중점을 둘 것입니다.
I. 골랭 구조란 무엇인가요?
Golang에서 구조는 관련 데이터 필드 집합을 캡슐화할 수 있는 사용자 정의 데이터 유형입니다. 구조는 데이터를 더 잘 관리하고 사용하기 위해 복잡한 데이터 구조를 설명하는 데 자주 사용됩니다.
Golang 구조 정의에는 일반적으로 여러 필드가 포함됩니다. 필드는 기본 데이터 유형(예: int, float 등)이거나 기타 구조 유형 및 포인터 유형일 수 있습니다. 다음은 간단한 Golang 구조 정의 예입니다.
type Person struct { Name string Age int Address string }
위 코드는 Name, Age 및 Address 세 가지 필드가 포함된 Person 구조 유형을 정의합니다. 여기서는 구조 필드의 첫 글자에 따라 다른 패키지(메인 패키지 포함)에서 해당 필드에 액세스할 수 있는지 여부가 결정된다는 점에 유의해야 합니다. 액세스 방법은 다음 예를 참조하세요.
package main import ( "fmt" ) type Person struct { Name string age int //小写开头 Address string } func main() { p1 := Person{"Bob", 30, "Beijing"} fmt.Println(p1.Name) // Bob fmt.Println(p1.Address) // Beijing fmt.Println(p1.age) // 编译错误,age未导出 }
II의 정의. golang 구조 메소드
Golang에서 구조 메소드는 구조의 필드 및 기타 관련 데이터에 접근할 수 있는 함수이며, 메소드에서 구조의 필드 값을 수정할 수 있습니다. 메서드 실행 중에 오류가 발생하는 경우 메서드는 값이나 오류를 반환할 수도 있습니다. 모든 구조 유형에는 메서드가 있을 수 있으며 메서드는 모든 패키지에서 정의될 수 있습니다.
Golang의 메서드는 함수와 유사하게 정의되지만 정의에서 수신자 유형을 지정해야 합니다. 수신자 유형은 메소드가 작동할 구조 객체를 나타내는 구조 유형 또는 해당 포인터 유형(여기서 포인터 유형은 C++의 참조 유형과 유사함)일 수 있습니다. 메소드의 정의 구문은 다음과 같습니다.
func (t Type) MethodName(parameterlist) (returntype) { // function body }
그 중 Type은 수신자의 유형을 나타내며, MethodName은 메소드 이름을 나타내며, 매개변수 목록은 메소드의 매개변수 목록을 정의하고, returntype은 메소드의 반환 유형을 나타냅니다. 반환값이 없으면 이 부분은 생략 가능합니다.
다음은 구조체에 대한 메서드의 예입니다.
type Rectangle struct { width float64 height float64 } func (r Rectangle) Area() float64 { return r.width * r.height }
위 코드는 너비와 높이라는 두 개의 필드를 포함하는 Rectangle이라는 구조체 유형을 정의합니다. 또한 의 면적을 반환하는 Area 메서드도 정의합니다. 여기서 수신자 r은 직사각형 자체입니다.
III. Golang 구조의 메소드 호출
Golang은 이를 위해 수신자 객체를 추가해야 한다는 점을 제외하면 일반 함수 호출과 유사합니다.
첫 번째는 값 메서드 호출입니다. 값 메서드를 통해 구조체의 메서드를 호출하면 먼저 구조체의 복사본이 생성된 후 복사본이 연산되어 결과가 반환됩니다. 다음은 값 메서드 호출의 예입니다.
func main() { r := Rectangle{5, 10} a := r.Area() //调用值方法 fmt.Println("area: ", a) //输出结果 }
출력 결과는 다음과 같습니다.
area: 50
두 번째는 포인터 메서드 호출입니다. 포인터 수신기 포인터 형식을 통해 호출되는 메서드는 원래 구조에서 직접 작동하므로 다음과 같습니다. 종종 가치 방법과 비교됩니다. 다음은 포인터 메서드 호출의 예입니다.
func (r *Rectangle) Scale(w, h float64) { r.width *= w r.height *= h } func main() { r := Rectangle{5, 10} r.Scale(2, 5) // 调用指针方法 fmt.Println(r.width, r.height) // 输出结果 }
출력 결과는 다음과 같습니다.
10 50
IV. Golang 구조 메서드 요약
이 기사에서는 Golang에서 구조의 정의와 메서드의 정의 및 호출을 배웠습니다. . 구조체 구조 유형은 관련 데이터 컬렉션을 캡슐화할 수 있는 Golang 언어의 중요한 구성 요소입니다. 동시에 메소드는 구조의 기능을 확장하여 프로그래머가 구조의 데이터를 더 잘 작동하고 관리할 수 있도록 합니다. 마지막으로 메소드는 수신자 유형의 값 메소드일 수도 있고 포인터 메소드일 수도 있으므로 실제 애플리케이션에서 적절한 호출 메소드를 선택해야 한다는 점에 유의해야 합니다.
위 내용은 golang 구조체 메소드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!