13.Golang包介绍

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

GO 2022-07-04 PM 1116℃ 0条

12.Golang函数

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

GO 2022-07-03 PM 1240℃ 0条

11.Golang结构体(二)

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

GO 2022-07-03 PM 1252℃ 0条

10.Golang结构体(一)

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

GO 2022-07-02 PM 1577℃ 0条

09.Golang指针介绍

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

GO 2022-07-01 PM 1216℃ 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 1202℃ 0条

07.Golang容器之切片功能操作

[TOC]前言一、切片不能直接比较切片之间是不能比较的,我们不能使用==操作符来判断两个切片是否含有全部相等元素。 切片唯一合法的比较操作是和nil比较。 一个nil值的切片并没有底层数组,一个nil值的切片的长度和容量都是0。但是我们不能说一个长度和容量都是0的切片一定是nil,例如下面的示例:var s1 []int //len(s1)=0;cap(s1)=0;s1==nil s2 := []int{} //len(s2)=0;cap(s2)=0;s2!=nil s3 := make([]int, 0) //len(s3)=0;cap(s3)=0;s3!...

GO 2022-06-30 PM 1304℃ 0条

06.Golang容器之切片

[TOC]前言一、概述切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。二、切片2.1 切片的定义声明切片类型的基本语法如下:var name []T说明name:表示变量名T:表示切片中的元素类型示例func main() { // 声明切片类型 var a []string //声明一个字符串切片 var b = []int{} //声明一个整型切片并初始化 ...

GO 2022-06-30 PM 1021℃ 0条

05.Golang容器之数组

[TOC]前言一、概述数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。和数组对应的类型是 Slice(切片),Slice 是可以增长和收缩的动态序列,功能也更灵活,但是想要理解 slice 工作原理的话需要先理解数组,所以本节主要为大家讲解数组的使用。二、数组2.1 声明数组数组的声明语法如下:var 数组变量名 [元素数量]Type说明数组变量名:数组声明及使用时的变量名。元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有到运行时才能确认大小的数...

GO 2022-06-29 PM 1304℃ 0条

04.Golang基本数据类型

[TOC]前言在静态类型语言(C++/Java/Golang 等)中规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。一、整形整型分两大类有符号整型:int8、int16、int32、int64、int。无符号整型:uint8、uint16、uint32、uint64、uint。注意: 在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。表示范围:在 32 位系统下是 -2147483648 ~ 2147483647 ,而在 64 位系统是 -9223372036854775808 ~ 9223...

GO 2022-06-28 PM 1483℃ 0条