함수와 메서드는 Go에서 코드 블록을 정의하는 두 가지 방법입니다. 함수 범위는 전역 또는 패키지 전용이고 메서드 범위는 전용 유형입니다. 함수에는 수신자 매개변수가 없지만 메소드에는 유형 멤버에 액세스할 수 있는 수신자 매개변수가 있습니다. 실제 사례에서는 구조를 사용하지 않은 평균 계산 기능과 구조를 이용한 가중 평균 계산 방법을 보여줍니다.
Go에서 함수와 메서드의 차이점
소개
Go 언어에서 함수와 메서드는 코드 블록을 정의하는 두 가지 방법입니다. 유사점이 많지만 근본적인 차이점도 있습니다. 이 글에서는 Go의 함수와 메소드의 차이점을 살펴보고 실제 예제를 제공합니다.
Function
함수는 입력에 대해 일부 작업을 수행하고 출력을 반환하는 유형 독립적인 코드 블록입니다. 함수는 func
키워드와 함수 이름, 매개변수 목록, 반환 값 유형을 사용하여 정의됩니다. func
关键字定义,后面跟着函数名、参数列表和返回值类型。
示例:
func sum(a, b int) int { return a + b }
调用函数:
result := sum(10, 20)
方法
方法是附加到类型上的函数。它允许该类型的实例访问和操作该方法的实现。方法使用接收器参数定义,后面跟着方法名、参数列表和返回值类型。
示例:
type Person struct { Name string } func (p Person) Greet() string { return "Hello, " + p.Name + "!" }
调用方法:
p := Person{"John"} greeting := p.Greet()
差异
特性 | 函数 | 方法 | |||
---|---|---|---|---|---|
定义 | func |
afbca75a3c4bea07d39946edd0d57a61 a4e733488ff4d79deacc65b80d12a259 |
|||
func Avg(numbers []float64) float64 { sum := 0.0 for _, num := range numbers { sum += num } return sum / float64(len(numbers)) } |
함수 호출: | type WeightedAvg struct { Numbers []float64 Weights []float64 } func (w WeightedAvg) Avg() float64 { weightedSum := 0.0 for i := range w.Numbers { weightedSum += w.Numbers[i] * w.Weights[i] } totalWeight := 0.0 for _, w := range w.Weights { totalWeight += w } return weightedSum / totalWeight } |
|||
메서드는 유형에 연결된 함수입니다. 이를 통해 해당 유형의 인스턴스가 메소드 구현에 액세스하고 조작할 수 있습니다. 메소드는 수신자 매개변수를 사용하여 정의되고 그 뒤에 메소드 이름, 매개변수 목록, 반환 값 유형이 옵니다. | 예: | rrreee | |||
rrreee | Difference |
특성 | 함수 | 메소드 th> th> |
---|
Definitionfunc
afbca75a3c4bea07d39946edd0d57a61 a4e733488ff4d79deacc65b80d12a259
글로벌, 패키지 프라이빗
유형 프라이빗
수신기 매개변수
위 내용은 golang 함수와 메소드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!