全栈编程

Balance $ 2,317
Item Sold 1230
文章作者: 全栈编程@luboke.com
版权声明: 本文章为全栈编程go语言体系课视频教程配套电子书,版权归 全栈编程@luboke.com所有,欢迎免费学习,转载必须注明出处!但禁止任何商业用途,否则将受到法律制裁!

方法

知识大纲 【全栈编程go语言体系课】方法知识大纲,版权@luboke.com,受法律保护。

一、方法的概述

方法是什么 实际上也是函数,声明时,在关键字func 和函数名之间增加了一个参数,这个参数被称作接收者,将函数与接收者的类型绑在一起。如果一个函数有接收者,这个函数就被称为方法。

Go 语言里有两种类型的接收者:值接收者,指针接收者

二、方法作用

方法有哪些作用呢 给用户定义的类型添加新的行为

三、方法定义与使用

我们一起来看一看方法的声明定义方式

定义格式

 func (var vartype)funcname(参数列表) (返回值列表) {
        函数体
    }

方法演示

为我们自定义的类型增加方法

- 1.定义结构体
type miniaction struct {
    name string //接口名称 热销商品,某一个分类下的商品列表
    router string //路由地址 https://api.luboke.com/hotproduct
    action string //路由对应的方法名 func hotproduct() {}
}
- 2.1.为结构体增加方法
func (mini miniaction)getMiniInfo() {
    fmt.Printf("mini.name=%s,mini.router=%s,mini.action=%s\n",mini.name,mini.router,mini.action)
}

- 2.2.为结构体增加方法
func (this *miniaction)miniInfo()  {
    fmt.Printf("mini.name=%s,mini.router=%s,mini.action=%s\n",this.name,this.router,this.action)
}
- 3.1.实例化结构体

mini1 := miniaction{
        name:   "获取商品列表",
        router: "productList",
        action: "productList()",
    }
    //调用
//接收者有两种,一种是值类型,一种是指针类型
    //接收者是值类型的时候,调用者可以是值类型,也可以是引用类型
    mini1.getMiniInfo()
- 3.2.实例化结构体

mini2 := &miniaction{
        name:   "获取分类下的商品列表",
        router: "productListByCategory",
        action: "productListByCategory()",
    }
mini2.getMiniInfo()
- //接收者是一个指针类型,调用者可以是值类型,也可以指针类型
    mini2.miniInfo()
    (*mini2).miniInfo()
    mini1.miniInfo()

四、方法注意事项

1.接收者是值类型的时候,调用者可以是值类型,也可以是引用类型
2.接收者是一个指针类型,调用者可以是值类型,也可以指针类型
3.定义的方法只能通过指定的类型来调
用,不能像函数一样来调用
4.方法的接收者对应的变量名,习惯使用this,self

//比如传统编程语言当中的Person类
//class Person{
    //    public name
    //    function info(){
    //        this.name
    //    }
    //
    //}
    //p = new Person()
    //p.info()

自定义类型也可以做为方法的接收者

- 1.自定义类型
type float float32
- 2.为自定义类型定义方法

func (radius float)getCircleAround() float {
    return radius*3.14*2
}
- 3.定义一个自定义的类型并调用方法
var radius float = 2
    fmt.Println(radius.getCircleAround())

接收者类型限定

接收者不能是接口,因为接口是一类事物的抽象,而方法是某个具体事物的实现,所以不能把一个接口类型的变量做为接收者

五、方法和函数的区别

值类型,引用类型都可做为参数使用
做为参数时遵循函数当中的值传递与引用传递规则
如果想要方法改变接收者的数据,就在接收者的指针类型上定义该方法。否则,就在普通的值类型上定义方法。
方法调用:调用者.方法名(参数)
函数调用:函数名(参数列表)
首字母大小写,遵循包的规则

作业

定义一个结构体,为这个结构体定义一个方法,这一个方法实现一个功能,实现两个整数的+-*/%

知识大纲 【全栈编程go语言体系课】方法知识大纲,版权@luboke.com,受法律保护。

文章作者: 全栈编程@luboke.com
版权声明: 本文章为全栈编程go语言体系课视频教程配套电子书,版权归 全栈编程@luboke.com所有,欢迎免费学习,转载必须注明出处!但禁止任何商业用途,否则将受到法律制裁!
copyright © 2020 全栈编程@luboke.com