写点什么

GO 学习之路 -5. 方法与接口

作者:子不语Any
  • 2022-11-30
    湖南
  • 本文字数:1007 字

    阅读完需:约 3 分钟

GO学习之路-5.方法与接口

前言

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

本文大纲


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 中的多态性。

发布于: 刚刚阅读数: 3
用户头像

子不语Any

关注

If not now,when? 2022-09-17 加入

安卓攻城狮

评论

发布
暂无评论
GO学习之路-5.方法与接口_Go_子不语Any_InfoQ写作社区