GO语言-方法与接口【GO学习之路】

224 阅读3分钟

top1.jpg

前言

本文来巩固GO语言方法与接口知识。

本文大纲

GO语言更文第5篇.png

1、方法Faction

GO语言中方法是什么? 在GO语言中,一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。

方法只是一个函数,带有一个特殊的接收器类型,处于func关键字和方法名之间。接收器可以是struct类型或非struct类型。接收者可以是值接收者,也可以是指针接收者。

调用方法时,值类型既可以调用值接收者的方法,也可以调用指针接收者的方法;指针类型既可以调用指针接收者的方法,也可以调用值接收者的方法。

定义方法的方式

func (t Type) methodName(parameter list)(return list) {
  
}
func funcName(parameter list)(return list){
    
}

方法和函数

  • Go语言不是一种纯粹面向对象的编程语言,它不支持类。因而,类型的方法是一种实现类似于类行为的方法。
  • 相同名称的方法可以在不同的类型上定义,而具有相同名称的函数是不允许的。

变量作用域

Go 语言的三种变量:

  • 函数内定义的变量称为局部变量
  • 函数外定义的变量称为全局变量
  • 函数定义中的变量称为形式参数

2、接口Interface

GO语言中接口如何定义?

面向对象世界中的接口的一般定义是“接口定义对象的行为”。在GO语言中,接口是一组方法签名。当类型为接口中的所有方法提供定义时,它被称为实现接口。

定义接口的语法:

/* 定义接口 */
type interface_name interface {
   method_name1 [return_type]
   method_name2 [return_type]
   method_name3 [return_type]
   ...
   method_namen [return_type]
}

几点说明:

  • interface可以被任意的对象实现
  • 一个对象可以实现任意多个interface
  • 任意的类型都实现了空interface(我们这样定义:interface{}),也就是包含0个method的interface

接口的类型

先来看维基百科里对Duck Typing(鸭子类型)的定义:

If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.

翻译过来就是:如果某个东西长得像鸭子,像鸭子一样游泳,像鸭子一样嘎嘎叫,那它就可以被看成是一只鸭子。

Duck Typing(鸭子类型),是动态编程语言的一种对象推断策略,它更关注对象能如何被使用,而不是对象的类型本身。Go 语言作为一门静态语言,它通过通过接口的方式完美支持鸭子类型。

Go语言的多态性

Go语言的多态性是在接口的帮助下实现的。

任何定义接口方法的类型都被称为隐式地实现该接口。类型接口的变量可以保存实现接口的任何值,接口的这个属性用于实现Go中的多态性。

掘金(juejin.cn)  一起分享知识,Keep Learning!

本文正在参加技术专题18期-聊聊Go语言框架