17.Golang接口介绍

[TOC]前言go语言并没有面向对象的相关概念,go语言提到的接口和java、c++等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。一、概述在 Go 语言中接口包含两种含义:它既是方法的集合, 同时还是一种类型。在Go 语言中是隐式实现的,意思就是对于一个具体的类型,不需要声明它实现了哪些接口,只需要提供接口所必需的方法。go语言通过隐性的方式实现了接口功能,相对比较灵活。Go语言接口的特点:interface 是方法或行为声明的集合interface接口方式实现比较隐性,任何类型的对象实现interface所包含的全部方法,则表明该类型实现...

GO 2022-07-07 PM 749℃ 0条

16.Golang方法和函数区别

[TOC]前言在前面的章节中介绍过了Golang中的方法和函数,但是如果不进行比较,对于两者的认识还是很容易产生混淆。一、概述Go语言支持方法。Go方法与Go函数相似,但有一点不同,方法就是一个包含了接收者参数的函数。在接收者参数的帮助下,该方法可以访问接收者的属性。接收方可以是结构类型或非结构类型。在代码中创建方法时,接收者和接收者类型必须出现在同一个包中。而且不允许创建一个方法,其中的接收者类型已经在另一个包中定义,包括像int、string等内建类型。如果您尝试这样做,那么编译器将抛出错误。语法func(reciver_name Type) method_name(paramete...

GO 2022-07-06 AM 969℃ 0条

15.Golang流程控制

[TOC]前言一、概述流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。流程控制语句有三个作用:选择:根据条件跳转到不同的执行序列;循环:根据条件反复执行某个序列;跳转:据条件返回到某执行序列。流程控制语句类型Go语言支持如下的几种流程控制语句:条件语句:关键字为if、else和else if。选择语句:关键字为switch、case和select。循环语句:关键字为for和range。跳转语句:关键字为goto。在具体的应用场景中,为了满足更丰富的控制需求,Go语言还添加了如下关键字: break 、 continue 和 fallthroug...

GO 2022-07-05 PM 669℃ 0条

14.Go module介绍

[TOC]前言一、概述大多数语言都有“依赖”、“包”等概念,Go语言的依赖处理经历了几次变革。最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面从v1.5开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行编译、测试等从v1.11开始,引入了Go Module 作为依赖解决方案,到v1.14宣布Go Module已经可以用于生产环境,到v1.16版本开始Go Module默认开启。二、GO PATH介绍首先从 Golang 的环境配置说起,安装好之后,通过命令行来看下当前 Golang 的环境配置。go env有两个...

GO 2022-07-04 PM 1214℃ 0条

13.Golang包介绍

[TOC]前言Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go语言中为我们提供了很多内置包,如 fmt、os、io 等。任何源代码文件必须属于某个包,同时源码文件的第一行有效代码必须是package pacakgeName 语句,通过该语句声明自己所在的包。一、概述Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然Go语言没有强制要求包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。包可以定义在很深的目录中,包名的定义是不包括目录路径的,但是包在引用时一般使用全路径引用。包...

GO 2022-07-04 PM 757℃ 0条

12.Golang函数

[TOC]前言一、概述函数 是基于功能或逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。由于 Go 语言是编译型语言,所以函数编写的顺序是无关紧要的。特点无需声明原型支持不定变参支持多返回值支持命名返回参数支持匿名函数和闭包函数也是一种类型,一个函数可以赋值给变量不支持函数嵌套 (nested) ,但可以嵌套匿名函数。不支持重载 (overload) ,一个包不能有两个名字一样的函数。不支持默认参数 (default parameter)二、函数的声明Go语言中声明函数使用func关键字,具体格式如下:func ...

GO 2022-07-03 PM 707℃ 0条

11.Golang结构体(二)

[TOC]前言一、方法和接收者1.1 格式定义Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者(Receiver)。接收者的概念就类似于其他语言中的this或者 self。方法的定义格式如下:func (接收者变量 接收者类型) 方法名(参数列表) (返回参数) { 函数体 }说明接收者变量:接收者中的参数变量名在命名时,官方建议使用接收者类型名称首字母的小写,而不是self、this之类的命名。例如,Person类型的接收者变量应该命名为 p,Connector类型的接收者变量应该命名为c等。接收者类型:接收者类型和参数类似,可以是指针...

GO 2022-07-03 PM 698℃ 0条

10.Golang结构体(一)

[TOC]前言一、概述结构体(struct) 是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。学过 C 或 C++ 的人都知道结构体,但在 Go 中,没有像 C++ 中的 class 类的概念,只有 struct 结构体的概念,所以也没有继承。结构体成员也可以称为“字段”,这些字段有以下特性:字段拥有自己的类型和值;字段名必须唯一;字段的类型也可以是结构体,甚至是字段所在结构体的类型。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。二、类型别名和自定义类型2.1 自定义类型在Go语言中有一些基本的数据类型,如string、整型...

GO 2022-07-02 PM 970℃ 0条

09.Golang指针介绍

[TOC]前言一、概述指针也是一种类型,也可以创建变量,称之为指针变量。指针变量的类型为 *Type,该指针指向一个 Type 类型的变量。指针变量最大的特点就是存储的某个实际变量的内存地址,通过记录某个变量的地址,从而间接的操作该变量。比如,想把"100"这个数写入程序中作为一个变量,程序一启动将数字"100"加载到内存当中,假设内存地址是0x0201),在程序中将数字"100"赋值给变量x,将内存地址赋值给变量y。这时候变量y就是一个指针变量。通过变量x和变量y都可以获取到数字"100"。Go语言中的指针不能进行偏移和运算,因此Go语言中的指针操作非常简单,我们只需要记住两个符号:&...

GO 2022-07-01 PM 798℃ 0条

08.Golang容器之Map

[TOC]前言一、概念Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。所有可比较的类型,如 整型 ,字符串 等,都可以作为 key 。二、map定义2.1 声明方式map 是引用类型,可以使用如下方式声明:var mapname map[keytype]valuetype说明mapname 为 map 的变量名。keytype 为键类型。valuetype 是键对应的值类型。提示:[keytype] 和 valuetype 之间允许有空格。在声明的时候不需要知道 ...

GO 2022-06-30 PM 822℃ 0条