02 2022 档案
摘要:匿名函数——没有函数名字的函数 Go 语言支持匿名函数,即在需要使用函数时,再定义函数,匿名函数没有函数名,只有函数体,函数可以被作为一种类型赋值给函数类型的变量,匿名函数也往往以变量方式被传递。 匿名函数经常被用于实现回调函数、闭包等。 1、定义一个匿名函数(很常见) 匿名函数的定义格式如下: f
阅读全文
摘要:函数(function)——把函数作为值保存到变量中 在 Go 语言中,函数也是一种类型,可以和其他类型一样被保存在变量中。下面的代码定义了一个函数变量 f,并将一个函数名 fire() 赋给函数变量 f,这样调用函数变量 f 时,实际调用的就是 fire() 函数,代码如下: package ma
阅读全文
摘要:函数(function)—— 声明函数+函数参数传递效果示例 函数是组织好的,可重复使用的,用来实现单一或相关功能的代码段,其可以提高应用的模块性和代码的重复利用率。 Go 语言支持普通函数、函数匿名和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方便。 Go 语言的函数属于 “一等公民”
阅读全文
摘要:列表(list)——可以快速增删的非连续空间的容器 1.1、列表原理 列表是一种非连续存储的容器,由多个节点组成,节点通过一些变量记录彼此之间的关系。列表有多种实现方法,如单链表、双链表等。 列表的原理可以这样理解:假设 A、B、C 三个人都有电话号码,如果 A 把号码告诉给 B,B 把号码告诉给
阅读全文
摘要:映射(map)——建立事物关联的容器 在业务和算法中需要使用任意类型的关联关系时,就需要使用到映射,如学号和学生的对应、名字与档案的对应关系等。 Go 语言提供的映射关系容器为 map。map 使用散列表(hash)实现。 大多数语言中映射关系容器使用两种算法:散列表和平衡树。散列表可以简单描述为一
阅读全文
摘要:切片(slice)(动态分配大小的连续空间) Go 语言切片的内部结构包含地址、大小和容量。切片一般用于快速地操作一块数据集合。 1.1、从数组或切片生成新的切片 切片默认指向一段连续内存区域,可以是数组,也可以是切片本身。 从连续内存区域生成切片是常见的操作。格式如下: slice [开始位置:结
阅读全文
摘要:数组(固定大小的连续空间) 数组是一段固定长度的连续内存区域。 在 Go 语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 Go 语言中的数组概念和 C 语言的数组概念完全一致。C 语言的数组也是一段固定长度的内存区域,数组的大小在声明时固定下来。 1.1、声明数组 数组的
阅读全文
摘要:类型别名(Type Alias) 类型别名是 Go 1.9 版本添加的新功能。主要用于代码升级、迁移中类型的兼容性问题。 在 C/C++ 语言中,代码重构升级可以使用宏快速定义新的一段代码。Go 语言中没有选择加入宏,而是将解决重构中最麻烦的类型名变更问题。 1.1、区分类型别名与类型定义 类型别名
阅读全文
摘要:字符串应用 字符串类型在业务中的应用可以说是最广泛的,所以本节汇总下常见的用法,会不断的更新补充。 1.1、计算字符串长度 内建函数 len(),可以用来获取切片、字符串、通道(channel)等的长度。 package main import "fmt" func main() { a := "w
阅读全文
摘要:变量能够使用的代码范围(堆、栈和变量逃逸) 讨论变量声明周期之前,先来了解下计算机组成里两个非常重要的概念:堆和栈。 1、什么是栈? 栈(stack)是一种拥有特殊规则的线性表数据结构。 1.1、概念 栈只允许往线性表的一端放入数据,之后在这一端取出数据,按照后进先出(LIFO,Last In Fi
阅读全文
摘要:指针 指针概念在 Go 语言中被拆分成为两个核心概念: 类型指针:允许对这个指针类型的数据进行修改。传递数据使用指针,而无须拷贝数据。类型指针不能进行偏移和运算。 切片:由指向起始元素的原始指针、元素数量和容量组成。 C/C++ 中指针饱受诟病的根本原因是指针运算和内存释放。 C/C++ 语言中的裸
阅读全文
摘要:搭建Go开发环境 安装 Go 语言的开发包后,可以选择安装集成开发环境(Integrated Development Environment,IDE)或者编辑器来提高开发效率。 集成开发环境中,推荐使用 Jetbrains 公司开发的 GoLand。也可以考虑微软公司开发的 Visual Studi
阅读全文
摘要:如何安装 Go 语言开发包? 要学 Go 语言,首先要学会 Go 语言开发包的安装和使用。 Go 语言的开发包可以在以下网站下载: golang 中国,地址:https://www.golangtc.com/ Go 语言官方网站,地址:https://go.dev/ 以 Go 语言官方网站为例,go
阅读全文