// method相关
// method是特殊的function,带有reciever参数。
// https://tour/golang.org package main
import ( "fmt" "math" )
type Vertex struct{
X, Y float64
}
// go 中没有类的概念
// method 方法,有接受者参数的函数
func (v Vertex) AbsMethod1() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
// function 普通的函数,
func AbsFunc1(v Vertex) float64{
return math.Sqrt(v.X*v.X + v.Y*v.Y) }
// 缩放 method, 有receiver
func (v *Vertex) ScaleMethod(f float64){
v.X = v.X * f v.Y = v.Y * f }
// 缩放,function, 用了指针,这里指针更像引用
func ScaleFunc(v *Vertex, f float64){
v.X *= f v.Y *= f }
func main(){
v := Vertex{3, 4}
fmt.Println("=====method Abs=", v.AbsMethod())
fmt.Println("=====function Abs = ", AbsFunc1(v))
v.ScaleMethod(10) fmt.Println("vvvv===", v)
fmt.Println(v.AbsMethod()) ScaleFunc(&v, 2)
fmt.Println(v)
p := &v p.AbsMethod1() //这里 p.AbsMethod1()解释为(*p).AbsMethod1()
}