Go语言方法定义

Go语言方法定义

方法介绍

在 Go 语言中有一个概念和函数极其相似,叫做方法 。Go 语言的方法其实是作用在接收者(receiver)上的一个函数,接收者是某种非内置类型的变量。因此方法是一种特殊类型的函数。

接收者类型可以是(几乎)任何类型,不仅仅是结构体类型:任何类型都可以有方法,甚至可以是函数类型,可以是 int、bool、string 或数组的别名类型。但是接收者不能是接口类型。

方法的声明和普通函数的声明类似,只是在函数名称前面多了一个参数,这个参数把这个方法绑定到这个参数对应的类型上。

方法定义

首先声明一个自定义类型Test

方法参数 receiver 类型可以是 Test 或 *Test。类型 Test不能是接口或指针。

第一种,定义一个无参数、无返回值的方法

第二种,定义一个单参数、无返回值的方法

第三种,定义一个多参数、无返回值的方法

第四种,定义一个无参数、单返回值的方法

第五种,定义一个多参数、多返回值的方法

方法和函数的关系

方法是特殊的函数,定义在某一特定的类型上,通过类型的实例来进行调用,这个实例被叫接收者。

接收者必须有一个显式的名字,这个名字必须在方法中被使用。 接收者类型必须在和方法同样的包中被声明。

注意: Go语言不允许为简单的内置类型添加方法,下面定义的方法是非法的。

编译错误:

我们可以用Go语言的type,来定义一个和int具有同样功能的类型。这个类型不能看成是int类型的别名,它们属于不同的类型,不能直接相互赋值。

合法的方法定义如下:

函数与方法的区别

1、对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。

2、对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。

下一篇:

Go语言方法规则------敬请期待!

第一章 环境搭建

第二章 Go语言基础

第三章 Go语言程序结构

第四章 Go语言基本类型

第五章 Go语言引用类型

第六章 自定义类型与指针

第七章 流程控制

第八章 函数

看完本文有收获?那就分享给更多人吧

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181015G1S7MI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券