美文网首页
golang官方练习:为指针接受者定义方法

golang官方练习:为指针接受者定义方法

作者: jiaxiaolei | 来源:发表于2022-11-21 10:56 被阅读0次
    
    
    
    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)
    }
    
    //NOTE: 对复杂类型进行修改,需要使用引用。否则操作的是副本,不会对该复杂对象生效
    func (v *Vertex) Scale(f float64) {
    //func (v Vertex) Scale(f float64) {
            v.X = v.X * f
            v.Y = v.Y * f
    }
    
    func main() {
            v := Vertex{3, 4}
            fmt.Println("v:",v)
            v.Scale(10)
            fmt.Println("v:",v)
            fmt.Println(v.Abs())
    
    }
    
    
    
    [root@sltvb7v2wy3 jia_methods]# gor  methods_pointrs.go
    v: {3 4}
    v: {30 40}
    50
    
    
    
    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)
    }
    
    //NOTE: 对复杂类型进行修改,需要使用引用。否则操作的是副本,不会对该复杂对象生效
    //func (v *Vertex) Scale(f float64) {
    func (v Vertex) Scale(f float64) {
            v.X = v.X * f
            v.Y = v.Y * f
    }
    
    func main() {
            v := Vertex{3, 4}
            fmt.Println("v:",v)
            v.Scale(10)
            fmt.Println("v:",v)
            fmt.Println(v.Abs())
    
    }
    
    [root@sltvb7v2wy3 jia_methods]# vim methods_pointrs.go
    [root@sltvb7v2wy3 jia_methods]# gor  methods_pointrs.go
    v: {3 4}
    v: {3 4}
    5
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:golang官方练习:为指针接受者定义方法

          本文链接:https://www.haomeiwen.com/subject/hvgbxdtx.html