golang
文章平均质量分 55
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
飞马攻城师
越努力的人越帅!!!
展开
-
golang 指针
每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go语言中使用字符放在变量前面对变量进行“取地址”操作。原创 2023-02-13 19:19:16 · 206 阅读 · 0 评论 -
golang context上下文
用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。当截止日过期时或调用返回的cancel函数时或当父上下文的Done通道关闭时,返回上下文的Done通道将被关闭,以最先发生的情况为准。当调用返回的cancel函数或当关闭父上下文的Done通道时,将关闭返回的上下文的Done通道。原创 2023-02-12 11:07:00 · 460 阅读 · 0 评论 -
golang 通道类型
Go 语言中的通道(channel)是一种特殊的类型。通道像一个传送带或者队列,总是遵循先入先出(First In First Out)的规则,保证收发数据的顺序。每一个通道都是一个具体类型的导管,也就是声明channel的时候需要为其指定元素类型。如果说goroutine是Go程序并发的执行体,channel就是它们之间的连接。channel是可以让一个goroutine发送特定值到另一个goroutine的通信机制。原创 2023-02-11 12:46:58 · 877 阅读 · 0 评论 -
golang 优雅关闭服务
先把在执行的任务执行完成,再关闭服务,防止中断服务造成程序错误,数据异常等影响。原创 2023-02-10 22:55:24 · 480 阅读 · 0 评论 -
GOROOT 和 GOPATH 的区别
指的是项目的开发目录,存在三个目录结构,分别是src、pkg、bin目录bin #编译文件目录 pkg #第三方包目录 src #目源文件目录,开发项目存放在这个目录下图例:所以在开发的时候,我们要先设置好这两个值到环境变量,才能在执行开发编译命令的时候能够正常查找处理。原创 2022-05-25 23:20:59 · 6622 阅读 · 0 评论 -
golang 实现并发任务同步
当某个请求同时开启多个任务时,为了保证在请求关闭前任务都能正常完成,可以利用sync包。原创 2022-11-11 12:41:05 · 300 阅读 · 0 评论 -
go 热重载工具air
go 热重载工具 air 的使用原创 2022-11-10 19:54:43 · 510 阅读 · 0 评论 -
golang url结构解析
golang 中通过net/url包中的Parse方法对指定的url结构进行解析,分别获取响应的元素原创 2022-11-09 18:51:39 · 1215 阅读 · 0 评论 -
go 相关命令的使用
Go module 相关命令的使用原创 2022-11-04 15:19:49 · 1607 阅读 · 0 评论 -
go 日期时间戳转换
go 日期时间戳转换。原创 2022-11-03 18:10:31 · 3053 阅读 · 0 评论 -
go 下划线的使用
“_”是特殊标识符,用来忽略结果。例:main.gohello.go结果:分析: import 下划线(如:)的作用:当导入一个包时,该包下的文件里所有函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 引用该包。即使用只是引用该包,仅仅是为了调用函数,所以无法通过包名来调用包中的其他函数。常用mysql例:分析: 第二个import就是不直接使用mysql包,只是执行一下这个包的init函数,把mysql的驱动注册到sql原创 2022-06-27 15:26:48 · 396 阅读 · 0 评论 -
go map原理理解
map同样也是数组存储的的,每个数组下标处存储的是一个bucket,这个bucket的类型见下面代码,每个bucket中可以存储8个kv键值对,当每个bucket存储的kv对到达8个之后,会通过overflow指针指向一个新的bucket,从而形成一个链表,看bmap的结构,我想大家应该很纳闷,没看见kv的结构和overflow指针啊,事实上,这两个结构体并没有显示定义,是通过指针运算进行访问的。原创 2022-06-25 14:30:12 · 289 阅读 · 0 评论 -
slice切片底层原理
切片本身并不是动态数组或者数组指针。它内部实现的数据结构通过指针引用底层数组,设定相关属性将数据读写操作限定在指定的区域内。切片本身是一个只读对象,其工作机制类似数组指针的一种封装。切片(slice)是对数组一个连续片段的引用,所以切片是一个引用类型。这个片段可以是整个数组,或者是由起始和终止索引标识的一些项的子集。需要注意的是,终止索引标识的项不包括在切片内。和数组不同的是,切片的长度可以在运行时修改,最小为 0 最大为相关数组的长度:切片是一个长度可变的数组。结构体:如图:分析: 切片的结构体由原创 2022-06-25 12:08:51 · 1972 阅读 · 0 评论 -
map类型的介绍
map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型。说明:1、KeyType: 表示键的类型。2、ValueType: 表示键对应的值的类型。分析: map类型的变量默认初始值为nil,需要使用make()函数来分配内存。三、map基本使用例:结果:声明时填充元素例:结果:四、判断某个键是否存在语法:例:结果:五、遍历map例:结果:分析: 遍历map时的元素顺序与添加键值对的顺序无关,所以每次遍历输出的结果都不一样语法:说明:1、map:原创 2022-06-25 00:12:42 · 4207 阅读 · 0 评论 -
golang slice切片
string本身是不可变的,因此要改变string中的字符,需要将字符串转化成切片。在大批量添加数据时,建议一次性分配足够大的空间,以减少内存分配和数据复制开销。函数 copy 在两个 slice 间复制数据,复制长度以 len 小的为准。string底层就是一个byte的数组,因此,也可以进行切片操作。在函数内等号左半部分可以用。1、切片追加另外一个切片。4、从数组中切片赋值。2、切片追加一个元素。3、切片追加多个元素。原创 2022-06-24 23:05:18 · 671 阅读 · 0 评论