方法介绍和使用|学习笔记

简介: 快速学习方法介绍和使用

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:方法介绍和使用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9675


方法介绍和使用

 

内容介绍:

一、方法的应用场景

二、方法的定义

三、方法的使用举例

四、对案例的总结

 

一、方法的应用场景

在某些情况下,我们要需要声明(定义)方法。比如 Person 结构体:除了有一些字段外(年龄,姓名...)Person 结构体还有一些行为比如:可以说话、跑步...通过学习,还可以做算术题,这时就要用方法才能完成。

 

二、方法的定义

Golang 中的方法是作用在指定的数据类型上的(即:和指定的数据类型绑定),因此自定义类型,即通过 type 定义的类型都可以有方法,而不仅仅是 struct(结构体)

 

三、方法的使用

1.说明

func (n Numben) Int64(0 (int64, error)

该函数只能够与 number 相互关联,该函数就称作方法。因此方法和函数有很多相似的地方,但概念上还是有区别的。

type A struct {

Num int}

func (a A)test(){

fmt.PrintIn(a.Num)}

对上述语法的说明:

1) func (a A)test{} 表示 A 结构体有一方法,方法名为 test

2) (aA) 体现 test 方法是和 A 类型绑定的

2.举例

新建一个文件夹文件夹,命名为 methodDemo,新建一个文件 main.go。将通用代码(package main import "fmt")复制粘贴到新建文件 main.go 中,新建一个结构体type Person,字段为 string 类型,然后给 Person 类型绑定绑定一个方法:func (p Person) test(){fmt.Println("test()",p.Name)},该方法输出了其名字,可以定义一个 person 实例来验证。var p Person p.test() 为调用方法

,p变量会在调用的时候把自己传入到func (p Person) 中,类似于函数的传参由于输出时没有给p赋值,可以运行起来,但是没有名字。此时若给p赋值(p.Name = "tom"),相当于这个时候P的字段中存有值,此时输出就会有内容等于汤姆。

核心代码:

package main

import (

"fmt"

Type A struct{

Num int

}

//给A类型绑定一份方法

func (a A) test() {

fmt.Print1n("test() name=", a.num)

}

func main() {

}

为了方便学习,修改成如下:

package main

import (

"fmt"

type Person struct{

Name string

}

func (p Person) test() {

fmt.Print1n("test() name=", p.Name)

}

func main() {

var p Personp.Name = "tom"

p.test()

}

 

四、对案例的总结

1. test 方法和 Person 类型绑定

2.test 方法只能通过 Person 类型的变量来调用,而不能直接调用,也不能使用其它类型变量来调用,下面的调用方式都是错误的 var dog Dog 、dog.test() 、test()

3.func (p Person) test) f..p 表示哪个Person变量调用,这个p就是它的副本,这点和函数传参非常相似。

1.p这个名字,有程序员指定,但不是固定的,比如修改成 person 也是可以的。

 

相关文章
10、pip换源加速下载的方式
10、pip换源加速下载的方式
10、pip换源加速下载的方式
|
安全 小程序 物联网
WLAN基础 无线局域网配置方法 旁挂三层组网隧道转发方式配置
WLAN基础 无线局域网配置方法 旁挂三层组网隧道转发方式配置
1860 0
WLAN基础 无线局域网配置方法 旁挂三层组网隧道转发方式配置
|
SQL Oracle 关系型数据库
能与PowerDesigner媲美的数据库建模工具PDMan
在设计数据库时,对现实世界进行分析、抽象、并从中找出内在联系,进而确定数据库的结构,这一过程就称为数据库建模。
595 0
能与PowerDesigner媲美的数据库建模工具PDMan
|
程序员 API Android开发
iOS开发:简单的Toast提示框实现
博主是以iOS开发出身,那就最后一篇博文就分享一下关于iOS的内容吧。iOS开发过程中,有些时候操作App的时候,需要给用户对应的响应提示操作,使用系统自带的提示框不是每种情况都适用的。
1012 0
iOS开发:简单的Toast提示框实现
|
NoSQL 关系型数据库 MySQL
使用redis( RedisTemplate )中的BitMap 记录用户签到情况
使用redis( RedisTemplate )中的BitMap 记录用户签到情况
804 0
|
存储 算法 NoSQL
浅谈软件编程中的8大数据结构
浅谈软件编程中的8大数据结构
442 0
浅谈软件编程中的8大数据结构
如何解决MyBatisPlus插入时生成的id为很大的数
如何解决MyBatisPlus插入时生成的id为很大的数
506 0
如何解决MyBatisPlus插入时生成的id为很大的数
|
消息中间件 存储 SQL
分布式事务理论详解
分布式事务理论详解
388 0
分布式事务理论详解
|
算法 IDE 大数据
二分法,不止是算法 - 你可能不知道的二分法应用
二分法大家都知道,记得应该是从初中学数学就学过,而在编程中也经常使用二分法来进行有序数列的查找。然而二分法并不紧紧局限于算法中的使用,他还被广泛使用于我们的工具中、数学中甚至生活中。
|
JSON JavaScript 前端开发
Python常用配置文件ini、json、yaml读写总结
Python常用配置文件ini、json、yaml读写总结
663 0