登录
首页 >  Golang >  Go问答

将方法转换为 func var

来源:stackoverflow

时间:2024-04-05 23:48:39 409浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《将方法转换为 func var》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

为什么将方法分配给函数处理程序有效。

短链接:https://play.golang.org/p/ueygcpmgyv6

package main

import (
    "fmt"
    "math"
)

type Vertex struct {
    X, Y float64
}

func (v *Vertex) Abs() float64 {
    return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

func Abs() float64 {
    return math.Sqrt(10)
}

func AbsFloat(f float64) float64 {
    return math.Sqrt(f)
}

func main() {
    v := Vertex{3, 4}

    // Assigning Abs() to func handler.
    var absFunc func() float64 = Abs
    fmt.Println(absFunc())

    // Wrong type as expected.
    //absFunc = AbsFloat

    // Assigning method to func handler works, why ?
    absFunc = v.Abs

    // Changing receiver args. Useful for unittesting but why/how this works ?
    v.X = 1
    v.Y = 1
    fmt.Println(absFunc())
}

这是 golang 类型检查“功能”吗 func()float64 == func(t)float64 还是其他什么?请帮助理解这个概念。


解决方案


v.Absmethod value,并引用规范:

方法值具有与没有接收器的方法相同的参数和结果类型的函数类型。

今天关于《将方法转换为 func var》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>