這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
// 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()
}