1.使用方法
方法类似于函数,但有一点不同:在关键字func后面添加了另一个参数部分,用于接受单个参数。
type Movie struct {
Name string
Rating float32
}
func (m *Movie) summary() string {
//code
}
在方法声明中,关键字func后面多了一个参数--接收者。严格说方法接收者是一种类型,这里是指向结构体Movie的指针。接下来是方法名、参数以及返回类型。
package main
import (
"fmt"
"strconv"
)
type Movie struct {
Name string
Rating float64
}
func (m *Movie) summary() string {
r := strconv.FormatFloat(m.Rating, 'f', 1, 64)
return m.Name + "," + r
}
func main() {
m := Movie{
Name: "Spiderman",
Rating: 3.2,
}
fmt.Println(m.summary())
}
程序运行结果如下:
Spiderman,3.2
2. 创建方法集
方法集是可对特定数据类型进行调用的一组方法。在Go语言中,任何数据类型都可有相关联的方法集,这让您能够在数据类型和方法之间建立关系。方法集可包含的方法数量不受限制,这是一种封装功能和创建库代码的有效方式。
处理球体时,假设您要计算其表面积和体积。在这种情况下,非常适合使用结构体和方法集。通过使用方法集,您只需要创建一次计算代码,就可将其重用于任何球体。要创建这个方法集,可声明结构体Sphere,再声明两个将结构体Sphere作为接收者的方法。
type Sphere struct {
Radius float64
}
func (s *Sphere) SurfaceArea() float6