Golang中结构体方法的定义和使用

本文将详细的描述在Go语言中如何定义方法,以及如何使用它;阅读本文可能需要一点Go语言基础以及结构体的知识;

在Go语言中,没有类这个概念,不过我们可以为结构体类型定义方法;

先看一段代码:

package main

import "fmt"

type Rectangle struct {
	X float64
	Y float64
}

func Area(r Rectangle)float64{
	return r.X * r.Y
}

func main(){
	A := Rectangle{12,5}
	fmt.Println(Area(A))
}

这段代码定义了一个 Rectangle 结构体类型,该结构体包含两个字段 X 和 Y,用于表示矩形的长和宽;另外定义了一个Area()函数,该函数接收一个Rectangle 结构体类型,返回该Rectangle的面积;

那么,我们现在来修改这段代码,将Area() 函数修改为Rectangle结构体的方法:

package main

import "fmt"

type Rectangle struct {
	X float64
	Y float64
}

func (r Rectangle) Area()float64{
	return r.X * r.Y
}

func main(){
	A := Rectangle{5,12}
	fmt.Println(A.Area())
}

此时的Area()彻彻底底的变成了Rectangle结构体的方法;在func 关键字和Area之间加入了一个特殊的参数,这里的 r 就有点相当于C++中的 this ,python中的 self;

在代码的16行中,展示了结构体方法的使用;

Area() 方法中的 r 是其结构体的一个副本;如果你需要在定义的方法中修改结构体中的数据,那么你需要将其定义为指针,否则你修改的值不会生效,因为那是一个副本;

func (r *Rectangle) SetXY(x,y float64){
	r.X = x
	r.Y = y
}

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/golang-method.html

分类: 计算机技术
推荐阅读:
Python 列表去重的几种方法 列表去重是指通过消除重复的元素,将列表中的所有唯一元素保留下来的操作;在Python中,存在多种方法删除列表中重复的元素,下面是一些常用的方法;
使用pip安装Python PIL库的正确方法 正确使用pip工具安装Python中PIL库的方法如下:
PySide6 事件详细教程 在PySide6中,事件是GUI应用程序中用户交互和其它系统事件的基本构成块;PySide6中的事件允许您捕获和处理各种类型的事件,从而实现对用户界面的交互和响应;
cannot fallthrough final case in switch的解决方法 在Go语言中,fallthrough 用于 switch 语句的 case 块中,它将会在当前 case 块执行完后执行下一个 case 块,不论下个 case 块条件是否匹配,但如果 fallthrough 后没有 case ,则会产生 cannot fallthrough final case in switch 的错误。
pip和pip3有什么区别,用哪个? pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。
Python bool()函数 在 Python 中,bool() 是一个内置函数,用于将一个值转换为 bool 类型。bool() 函数返回两个值之一:True 或 False。