- 在函数声明时,在其名字之前放上一个变量,即是一个方法
- 这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法
方法不带参数
// 方法一个Myint类型
type Myint int
// 定义一个方法
func (m Myint) Print() {
log.Println(m)
}
func main() {
var i Myint = 10
i.Print()
}
方法带参数
注:在方法内部修改类型变量的值,需要通过指针
// 方法一个Myint类型
type Myint int
// 定义一个方法
func (m *Myint) Print(c int) {
r := (*m) + Myint(c) // c需要强制类型转换
log.Println(r)
}
func main() {
var i Myint = 10
j := 20
i.Print(j)
}
结构体方法
type Point struct {
x int
y int
}
func (p Point) Print() {
log.Println("x: ", p.x, "y: ", p.y)
}
func main() {
var p Point
p.Print()
}
结构体方法带参数
注:在方法内部修改类型变量的值,需要通过指针
type Point struct {
x int
y int
}
func (p *Point) scale(rate int) {
p.x = p.x * rate
p.y = p.y * rate
}
func main() {
var p Point = Point{1, 3}
p.scale(2)
log.Println("x: ", p.x, "y: ", p.y)
}