最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • golang 函数与方法的区别是?

    函数和方法是 go 中用于定义代码块的两种方式。函数作用域为全局或包私有,方法作用域为类型私有。函数没有接收器参数,而方法有接收器参数,可以访问类型成员。实战案例展示了不使用结构体的平均数计算函数,以及使用结构体的带权重平均数计算方法。

    golang 函数与方法的区别是?

    Go 中函数与方法的差异

    简介
    在 Go 语言中,函数和方法是两种定义代码块的方式。虽然有许多相似之处,但它们也有根本的区别。本文将深入探讨 Go 中函数和方法之间的差异,并提供实战案例。

    函数
    函数是独立于类型的代码块,它的作用是对输入执行一些操作并返回输出。函数使用 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 <receiver type> <method name>
    作用域 全局、包私有 类型私有
    接收器参数
    访问类型成员 不行 可以

    实战案例

    计算平均数
    在不使用结构体的情况下,可以编写一个函数来计算浮点数数组的平均数:

    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
    }

    结论
    函数和方法在 Go 语言中扮演着不同的角色。函数是独立于类型的代码块,用于执行一般性任务。方法是附加到类型上的函数,用于操作和访问该类型的实例。理解函数和方法之间的差异对于编写清晰、可维护的 Go 代码至关重要。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » golang 函数与方法的区别是?
    • 10会员总数(位)
    • 14316资源总数(个)
    • 1052本周发布(个)
    • 49 今日发布(个)
    • 103稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情