
Golang基础
文章平均质量分 92
凤求凰的博客
人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活!!!
展开
-
Go语言基础(十五):垃圾回收机制(三色标记)
常见GC算法:引用计数、标记清除、分代回收原创 2023-02-19 18:05:27 · 1165 阅读 · 0 评论 -
必考设计模式
设计模式、数据结构与算法是写好代码的基本功原创 2022-11-17 17:57:47 · 1077 阅读 · 0 评论 -
Gin框架(一):基础概览
文章目录一、Gin框架介绍二、Gin框架安装与使用1、安装2、示例三、RESTful API四、Gin渲染1、HTML渲染2、自定义模板函数3、静态文件处理4、使用模板继承5、 补充文件路径处理6、JSON渲染五、获取参数1、获取querystring参数2、获取form参数3、获取json参数4、获取path参数5、参数绑定(推荐, 兼容以上所有)六、文件上传1、单个文件上传2、多个文件上传七、重定向1、HTTP重定向2、路由重定向八、Gin路由1、普通路由2、路由组3、路由原理九、Gin中间件1、定义中原创 2022-01-09 15:56:02 · 5177 阅读 · 2 评论 -
Go语言基础(十四):单元测试
文章目录一、Go Test工具二、测试函数1、测试函数示例2、测试组3、子测试4、测试覆盖率三、基准测试1、基准测试函数格式2、基准测试示例2、性能比较函数3、重置时间4、并行测试三、Setup与TearDown1、TestMain2、子测试的Setup与Teardown四、示例函数1、示例函数的格式2、示例函数示例在我看来,一位合格的程序猿,应当是开发(主),测试、网络、基础运维都有一定的知识积累的,这样你的思维才不会局限于开发的固有视野中,而是从一个全局视野去思考,解决问题。因此今天我们来学习一下,基原创 2022-01-01 15:52:16 · 554 阅读 · 0 评论 -
Go语言基础(十三):网络编程
文章目录一、实现TCP通信1、TCP协议2、TCP服务端3、TCP客户端4、TCP粘包(1)为什么会出现粘包?(2)解决方法二、实现UDP通信1、UDP协议2、UDP服务端3、UDP客户端网络基础、socket编程就不普及了,对我来说,真的是老油条的概念了。python网络编程入门篇、进阶篇一、实现TCP通信1、TCP协议TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于原创 2021-12-26 18:51:02 · 303 阅读 · 0 评论 -
Go语言基础(十二):并发编程
文章目录一、前言二、goroutine1、使用goroutine2、启动goroutine示例3、main优雅谢幕(sync.WaitGroup)三、goroutine与线程1、可增长的栈2、goroutine调度3、GOMAXPROCS四、channel1、channel类型2、创建channel3、channel操作(1)发送(2)接收(3)关闭4、无缓冲的通道5、有缓冲的通道6、for range从通道循环取值7、单向通道8、通道总结五、worker pool(goroutine池)六、select多原创 2021-12-25 18:09:59 · 2105 阅读 · 0 评论 -
Go语言基础(十一):反射
文章目录一、前言1、变量的内在机制2、反射介绍3、reflect包二、TypeOf1、基本使用2、type(name、kind区别)三、ValueOf1、通过反射获取值3、通过反射设置变量的值4、isNil()和isValid()(1)isNil()(2)isValid()四、结构体反射1、与结构体相关的方法2、与结构体相关的方法3、结构体反射示例五、写在最后( 反射是把双刃剑)一、前言常用于从未知的数据结构中去获取想要的数据。主要在协同开发中,通过调用其他人的写的api获取数据时使用。1、变量的内在原创 2021-12-23 22:02:59 · 370 阅读 · 0 评论 -
Go语言基础(十):接口
文章目录一、为什么要用接口?二、接口的定义三、实现接口的条件四、接口类型变量五、值接收者和指针接收者实现接口的区别1、值接收者实现接口2、指针接收者实现接口3、面试题六、类型与接口的关系1、一个类型实现多个接口2、多个类型实现同一接口七、接口嵌套八、空接口1、空接口的定义2、空接口的应用(1)空接口作为函数的参数(类似范型?)(2)空接口作为map的值3、类型断言在Go语言中接口(interface)是一种类型,一种抽象的类型。interface是一组method的集合,是 鸭子类型 、多态性(其实go原创 2021-12-23 21:55:59 · 530 阅读 · 2 评论 -
Go语言基础(九):文件操作
文章目录一、打开和关闭文件二、读取文件1、file.Read()(1)基本使用(2)循环读取2、bufio按行读取文件3、ioutil读取整个文件三、文件写入1、Write和WriteString2、bufio.NewWriter3、ioutil.WriteFile一、打开和关闭文件os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。package mainimport ( "fmt" "os")func main(原创 2020-10-11 14:19:36 · 413 阅读 · 1 评论 -
Go语言基础(八):包
包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt、os、io等。一、定义包一个包可以简单理解为一个存放.go文件的文件夹。 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的包。package 包名注意事项:一个文件夹下面直接包含的文件只能归属一个package,同样一个package的文件不能在多个文件夹下。包名可以不和文件夹的名字一样,包名不能包含 - 符号。包名为main的包为应用程序的入口包,这种包原创 2020-10-11 13:30:19 · 622 阅读 · 0 评论 -
Go语言基础(七):结构体
文章目录一、类型别名和自定义类型1、自定义类型2、类型别名3、类型定义和类型别名的区别二、结构体1、结构体定义2、结构体实例化(1)基本实例化(2)匿名结构体(3)创建指针类型结构体(4)取结构体的地址实例化3、结构体初始化4、结构体内存布局5、面试题6、构造函数7、方法和接收者8、任意类型添加方法9、结构体的匿名字段10、嵌套结构体11、结构体的组合12、结构体字段的可见性13、结构体与JSON序列化14、结构体标签15、结构体和方法补充知识点Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的原创 2020-10-09 18:31:39 · 775 阅读 · 0 评论 -
Go语言基础(六):指针
文章目录1、指针地址和指针类型2、指针取值3、new和make(1)new(2)make(3)new与make的区别Go语言中的指针不能进行偏移和运算,因此Go语言中的指针操作非常简单,我们只需要记住两个符号:&(取地址)和*(根据地址取值)。要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。1、指针地址和指针类型每个变量在运行时都拥有一个地址,这个地址代原创 2020-10-08 20:11:44 · 420 阅读 · 0 评论 -
Go语言基础(五):函数
文章目录一、函数定义二、函数的调用三、参数与返回值1、参数(1)类型简写(2)可变参数2、返回值(1)多返回值(2)返回值命名(3)返回值补充四、变量作用域1、全局变量2、局部变量(1)函数局部变量(2)语句块局部变量五、函数类型与变量1、函数类型2、函数类型变量六、高阶函数1、函数作为参数2、函数作为返回值七、匿名函数和闭包1、匿名函数2、闭包八、defer语句1、defer特性2、defer执行时机3、defer经典案例九、Go的内置函数函数是组织好的、可重复使用的、用于执行指定任务的代码块。一、函原创 2020-10-08 17:18:24 · 502 阅读 · 0 评论 -
Go语言基础(四):map
文章目录一、map的定义二、map基本使用1、判断某个键是否存在2、map的遍历3、使用delete()函数删除键值对4、按照指定顺序遍历map5、元素为map类型的切片6、值为切片类型的map三、练习题Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。一、map的定义map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。// map的定义map[KeyType]ValueType/* KeyType:表示键的类型。Va原创 2020-10-08 14:58:40 · 580 阅读 · 0 评论 -
Go语言基础(三):数组与切片
文章目录一、数组1、数组的初始化(1)方法一(2)方法二(3)方法三2、数组的遍历3、多维数组(1)二维数组的定义(2)二维数组的遍历4、数组是值类型5、练习题二、切片一、数组数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:// 定义一个长度为3元素类型为int的数组avar a [3]int数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变1、数组的初始化(1)方法一 var testArr原创 2020-10-07 20:15:04 · 760 阅读 · 0 评论 -
Go语言基础(二):流程控制
文章目录一、if else(分支结构)二、for(循环结构)1、for循环变种2、for range(键值循环)三、switch case语句四、goto(跳转到指定标签)五、break(跳出循环)六、continue(继续下次循环)七、练习题流程控制是每种编程语言控制逻辑走向和执行次序的重要部分Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。一、if else(分支结构)1、if条件判断基本写法if 表达式1 {原创 2020-10-07 16:58:10 · 373 阅读 · 0 评论 -
Go语言基础(一):变量与常量、基本数据类型、运算符
文章目录一、变量与常量1、标识符与关键字2、变量(1)批量声明(2)变量的初始化(3)类型推导(4)短变量声明(5)匿名变量(6)注意事项3、常量(1)iota常量计数器二、基本数据类型1、整型2、浮点型3、布尔值4、字符串(1)字符串中转义符的使用(2)多行字符串(3)字符串的常用操作(4)byte和rune类型(5)修改字符串5、类型转换6、Printf打印各个基本类型的值三、运算符1、算数运算符2、关系运算符3、逻辑运算符4、赋值运算符一、变量与常量1、标识符与关键字在编程语言中标识符就是程序员原创 2020-10-06 21:25:21 · 579 阅读 · 0 评论