go结构体的方法和普通函数

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)
}
//这里为 *vertex 定义了 Scale 方法。
func (v *vertex) scale(f float64) {
    v.X = v.X * f
    v.Y = v.Y * f
}

func main() {
    v :=vertex{3,4}
    v.scale(10)
    fmt.Println(v.abs())
}

把上面的结构体的方法改为函数就是下面的形式

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 (v *vertex) scale(f float64) {
    v.X = v.X * f
    v.Y = v.Y * f
}

func main() {
    v :=vertex{3,4}
    v.scale(10)
    fmt.Println(v.abs())
}

猜你喜欢

转载自www.cnblogs.com/c-x-a/p/11224088.html