Go 语言不像python等程序有 classes,但是提供你可以在某种型态上定义方法(method),method 其实是作用在接收器(receiver)上的一种函式,接收器是某种型别的变数,所以其实 method 也就是一种特殊型别的函式。
这里来用 Go Tutorial 上的例子来示范如何撰写一个 method:
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 main() {
v := Vertex{3, 4}
fmt.Println(v.Abs()) // 5
}
解释一下上述的程序码,一开始先宣告一个名为 Vertex 结构型态,里面的属性包含 X(float64) 和 Y(float64),接着就是撰写一个 method 了,这个 method 是以 Vertex 作为接收器,method 名称为 Abs,最後回传一个浮点数,接着 method 里头,即为对接收器的运算并回传值。
在前言的时候,有解释到 method 即为特殊的函式,这里我们来一样以 Go Tutorial 上的例子来看,如何用函式来达到与 method 一样的结果:
package main
import (
"fmt"
"math"
)
type Vertex struct {
X, Y float64
}
func Abs(v Vertex) float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func main() {
v := Vertex{3, 4}
fmt.Println(Abs(v))
}
method 必须带有接收器,本文章的皆以结构为接收器,其实 method 不局限结构为接收器,你可以自己定义一个型态,例如整数或浮点数,或是指标都可以,配合自己的需求做调整。今天介绍了 method 给各位读者,希望有让各位读者初步了解 method 的使用,也感谢您今天的阅读!
https://tour.golang.org/methods/1
https://tour.golang.org/methods/2
在AWS solutions library你可以找到数十份各式各样的解决方案参考文件,在这个解决方...
之前曾在 Day8 有跟大家提过字体常用的样式,今天来带大家深入探讨各式文字怎麽设计,才会带给使用者...
前言 我们目前把laravel的服务都写得差不多了 後来发现没有实际测试过订单建立 这边我们来把订单...
如果你想要的更多,你得对自己做更高的要求。 If you want more, you have t...
ㄧ日客家话:中文:去哪里 客语:诶 ㄏㄧ 赖 诶 BigInt对数学、金融、科学来说是很重要的,因为...