随笔分类 - Go语言学习笔记
摘要:一、什么是Gin Gin 是一个用 Go (Golang) 编写的 web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者, 你会爱上 Gin.。它具有如下特征: 快速 基于 Radix 树的
阅读全文
摘要:一、context上下文简介 context简单的理解就是上下文,它可以进行不同协程之间的通信,所以也就包含了上下文的环境等变量信息。有下面三种用法: WithCancel 通过该方法可以达到一个协程在某一时刻控制另一个协程的退出 WithDeadline 通过该方法可以在一个协程在指定时间点控制另
阅读全文
摘要:一、channel基础 1、引入 在Goroutine基础中我们通过WaitGroup解决了主线程因为无法感知其它协程是否结束而造成提前结束的问题,通过锁机制解决了多协程之间共享数据而造成数据混乱和安全的问题。归结起来协程问题: 资源竞争,数据共享而引发数据安全问题 一个协程不知道另一个协程什么时候
阅读全文
摘要:一、goroutine基础介绍 goroutine是Golang中的协程,它是一种微线程,比起线程它耗费更少的资源。线程的作用就是可以进行并发或者并行,完全利用电脑多核的资源。 并发 多个任务跑在一个cpu上,在某一时刻只处理一个任务,任务之间来回切换的时间极短 并行 多个任务跑在多个cpu上,在某
阅读全文
摘要:一、问题引入 如果让你测试一个函数或者模块,你会怎么做呢?如下: package main import "fmt" // 被测试的函数 func calAdd(n1 int, n2 int) int { res := n1 + n2 return res } func main() { // 传统
阅读全文
摘要:一、flag包之命令行解析 1、os.Args os.Args是一个string切片,用来存储所有的命令行参数。 var Args []string 案例演示: package main import ( "fmt" "os" ) func main() { // 获取命令行参数 fmt.Print
阅读全文
摘要:一、文件基本介绍 文件就是保存数据用的,它可以保存一段文字、一张图片,也可以是声音或者视频等,它在程序中以流的形式来操作。 os包下的File结构体含了所有的文件相关操作: type File type File struct { // 内含隐藏或非导出字段 } File代表一个打开的文件对象。 f
阅读全文
摘要:一、需求分析 该程序实现对客户的增、删、查、改功能。其主要的界面实现: 主菜单界面 客户关系管理系统 1 添加客户 2 修改客户 3 删除客户 4 客户列表 5 退 出 请选择(1-5): 添加客户界面 ... 请选择(1-5): 1 添加客户 姓名:张三 性别:男 年龄:25 电话:1526935
阅读全文
摘要:一、基础 什么是类型断言呢? 举个例子,我们在之前的Usb接口案例中,假如Phone这个结构体除了实现接口的方法外,它还有自己定义的一个单独方法,但是Carema没有,那么当传入到Computer的use方法中就需要进行类型判断,如果是Phone结构体类型还需要执行额外的方法。 所以类型断言是由于接
阅读全文
摘要:Golang也拥有面向对象编程的封装、继承、多态特性。 一、封装 封装就是将抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的方法才能对字段进行操作。那么如何来实现封装呢? 将结构体、首字母小写(这样就是私有变量,只能在本包使用) 在结构体所在的包中提供一个工厂模式
阅读全文
摘要:一、结构体变量方法基础 结构体变量不仅仅时拥有自己的属性,而且还拥有自己的方法,比如一个人不仅仅拥有姓名、年龄,他还有一些行为,这些行为在结构体变量中就可以理解为方法。Golang中的方法是与具体的数据类型进行绑定的,因此也不仅仅时结构体(struct)拥有自己的方法。 (一)快速入门 1、方法的声
阅读全文
摘要:一、Golang中的面向对象特性 Golang中也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。 Golang中没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等地位,可以理解Golang是基于struct来实现OOP
阅读全文
摘要:一、map简介 map是key-value的数据结构,基本语法:var map 变量名 map[keytype]valuetype。 keytype可以是很多种数据类型,比如 bool、int、string、指针等,通常keytype为int和string。valuetype和keytype差不多,
阅读全文
摘要:一、切片简介 为什么需要切片呢?我们知道数组的大小一旦确定下来就不能改变了,那么如果存放一些个数不确定的值,数组就不能使用了,这时候就需要切片,切片可以当作动态数组来使用。 切片的使用和数组类似,查询切片的长度、遍历切片等操作 切片是引用类型,它是数组的一个引用,在进行传递时,遵循引用传递的机制 切
阅读全文
摘要:一、数组简介 数组是一种可以存放多个同一类型数据的数据类型,在Go中,数组是值类型。 数组定义 var 数组名 [数组大小]数据类型 如:var a [5]int 内存布局 package main import "fmt" func main() { var intArr [3]int fmt.P
阅读全文
摘要:一、基本介绍 在Go中不支持传统的try...catch...finally这种处理,在Go中引入了defer、panic、recover处理方式,通过抛出一个panic异常,然后在defer中通过recover捕获这个异常,最后正常处理。 package main import ( "fmt" )
阅读全文
摘要:一、内置函数 Golang中为了编程方便,提供了一些函数,这些函数可以直接使用,称之为Go的内置函数。详情查看:https://studygolang.com/static/pkgdoc/pkg/builtin.htm Constants type bool type byte type rune
阅读全文
摘要:一、init函数 (一)简介 每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会在main函数前调用。 package main import "fmt" // init函数,通常可以在init函数中完成初始化工作 func init() {
阅读全文
摘要:一、什么是函数 为完成某一功能的程序指令(语句)的集合,称为函数。在Go中函数分为自定义函数、系统函数。 函数的基本语法: func 函数名称(形参列表) (返回值列表) { 函数体... return 返回值列表 } 形参列表 表示函数的输入 函数体 表示为了实现某一功能的的代码块 返回值列表 函
阅读全文
摘要:一、break break语句用于终止某个语句块的执行,用于终端当前for循环或跳出switch语句。 package main import "fmt" func main() { // 打印小于等于5的数 for i := 0; i <= 10; i++ { if i > 5 { break }
阅读全文


浙公网安备 33010602011771号