Day13-Go方法method

前言

Go 语言不像python等程序有 classes,但是提供你可以在某种型态上定义方法(method),method 其实是作用在接收器(receiver)上的一种函式,接收器是某种型别的变数,所以其实 method 也就是一种特殊型别的函式。

撰写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 里头,即为对接收器的运算并回传值。

方法 vs 函式

在前言的时候,有解释到 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


<<:  Day 06 - 那些~帮助开发的套件

>>:  07 Re: 从零开始的竞程生活

案例:AWS MLOps Framework - 解决方案介绍

在AWS solutions library你可以找到数十份各式各样的解决方案参考文件,在这个解决方...

30天打造品牌特色电商网站 Day.18 文字的样子

之前曾在 Day8 有跟大家提过字体常用的样式,今天来带大家深入探讨各式文字怎麽设计,才会带给使用者...

[Day27] 第二十七章-建立订单api (nodejs)

前言 我们目前把laravel的服务都写得差不多了 後来发现没有实际测试过订单建立 这边我们来把订单...

如果你想要的更多,你得对自己做更高的要求。

如果你想要的更多,你得对自己做更高的要求。 If you want more, you have t...

初学者跪着学JavaScript Day8 : 资料型别:BigInt

ㄧ日客家话:中文:去哪里 客语:诶 ㄏㄧ 赖 诶 BigInt对数学、金融、科学来说是很重要的,因为...