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

分类: 计算机技术
推荐阅读:
使用Rust计算圆周率 要使用 Rust 计算圆周率,可以使用蒙特卡罗方法。该方法通过在单位正方形中生成随机点,并计算落在单位圆内的点的数量来估计圆周率。
Rust:cannot assign twice to immutable variable `x`错误解决方法 在rust语言中,变量默认情况下是不允许被改变的,当你试图修改一个不可变变量时,将造成 error[E0384]: cannot assign twice to immutable variable `x` 这样的错误;
Rust:formatting specifier missing 错误解决方法 编译Rust程序时,出现 formatting specifier missing 错误,导致该错误的原因可能是错误的使用println!宏;
Python生成n个元素的全排列 本文将使用Python语言编写程序生成n个元素的全排列,代码不使用第三方库;
MIPS处理器的基本特性和体系结构 MIPS处理器的基本特性和体系结构包括以下方面:
Golang实现base64加密解密 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。