首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go程序例子(20):方法

Go程序例子(20):方法

原创
作者头像
用户11078756
发布2024-12-13 14:45:05
发布2024-12-13 14:45:05
2450
举报
文章被收录于专栏:go程序例子go程序例子

Go 支持在结构体类型上定义方法。

代码语言:go
复制
package main

import "fmt"

type rect struct {
    width, height int
}
// 这个 area 方法的接收者类型是 *rect。
func (r *rect) area() int {
    return r.width * r.height
}
// 方法可以为指针接收者类型或值接收者类型定义。以下是一个值接收者的示例。
func (r rect) perim() int {
    return 2*r.width + 2*r.height
}

func main() {
    r := rect{width: 10, height: 5}
	// 这里我们调用了为结构体定义的两个方法。
    fmt.Println("area: ", r.area())
    fmt.Println("perim:", r.perim())
	// Go 会在方法调用时自动处理值与指针之间的转换。您可能希望使用指针接收者类型以避免在方法调用时复制数据,或者允许方法修改接收的结构体
    rp := &r
    fmt.Println("area: ", rp.area())
    fmt.Println("perim:", rp.perim())
}

运行结果:

代码语言:javascript
复制
$ go run methods.go 
area:  50
perim: 30
area:  50
perim: 30

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档