随笔分类 -  golang

摘要:goroutine GMP调度模型 抢占式调度 参考资料 goroutine go协程的本质是用户态的线程,相比于传统的内核态线程,在性能方面有更多优点 协程的切换发生在用户态,不用切换到内核态,不用处理时钟中断,效率更高。 协程栈空间更小(go支持协程栈的自动增长),一般在4KB左右。而线程栈一般 阅读全文
posted @ 2023-02-16 23:04 HachikoT 阅读(64) 评论(0) 推荐(0) 编辑
摘要:格式化输出 旗标 宽度和精度 占位符 浮点数 参考资料 格式化输出 go使用和C语言类似的格式化输出语法,用的是fmt.Printf函数。 go语言的格式化语法结构如下 // %[旗标][宽度][.精度][\[arg索引\]]动词 "%+8.3[3]f" 旗标 | 旗标 | 效果 | | : : | 阅读全文
posted @ 2022-12-11 22:35 HachikoT 阅读(338) 评论(0) 推荐(0) 编辑
摘要:len cap make append copy len // The len built-in function returns the length of v, according to its type: // Array: the number of elements in v. // Po 阅读全文
posted @ 2022-03-10 11:11 HachikoT 阅读(35) 评论(0) 推荐(0) 编辑
摘要:math/rand crypto/rand linux真随机数 参考资料 math/rand math/rand实现了伪随机数算法,和其它的编程语言类似,操作逻辑都是先设置随机数种子,然后再获取随机数序列。这样每次生成的随机数序列都是不一样的。 package main import ( "fmt" 阅读全文
posted @ 2022-02-27 12:04 HachikoT 阅读(3499) 评论(0) 推荐(0) 编辑
摘要:context emptyCtx valueCtx cancelCtx timerCtx 参考资料 context context是go1.7之后引入的包,主要用于在多层级的子协程中控制流程和传递信息。 context的接口如下。 type Context interface { // 返回绑定当前 阅读全文
posted @ 2022-02-21 10:10 HachikoT 阅读(106) 评论(0) 推荐(0) 编辑
摘要:defer 规则一:在函数退出时执行 规则二:当defer被声明时,其参数就会被实时解析 规则三:defer执行顺序为先进后出 参考资料 defer go语言中的defer可以将指定的语句延迟执行,用于实现资源的回收。 规则一:在函数退出时执行 需要注意,defer后的语句是在函数退出时执行,而不是 阅读全文
posted @ 2022-02-21 10:09 HachikoT 阅读(191) 评论(0) 推荐(0) 编辑
摘要:switch语法 type switch 参考资料 switch语法 在go中,switch可以支持传入各种类型进行选择,相当于从第1个case到最后一个case遍历进行比较,执行最先满足条件的case。 并且go语言还规定必须要显式写明fallthrough语句才会接着执行下一个case,不用再写 阅读全文
posted @ 2022-01-09 21:27 HachikoT 阅读(1467) 评论(0) 推荐(0) 编辑
摘要:go数组 初始化 访问不存在的元素会panic for range遍历数组 数组的比较 go切片 初始化 访问不存在的元素会panic for range遍历数组 切片的比较 nil切片和空切片 append追加元素 参考资料 go数组 数组是一组相同类型元素的线性序列,在go中,数组是值类型,所以 阅读全文
posted @ 2022-01-09 20:23 HachikoT 阅读(118) 评论(0) 推荐(0) 编辑
摘要:初始化顺序 参考资料 初始化顺序 go语言标准规定了多个编译单元的初始化顺序,包的初始化顺序按照包引入的顺序进行初始化,如果有依赖关系先解决依赖关系,按依赖的顺序进行初始化。 如果某个包被多次导入的话,也只会初始化一次。 对于同一个包中的多个.go文件,实现一般按照文件名排序,进行初始化 首先按顺序 阅读全文
posted @ 2021-12-13 13:47 HachikoT 阅读(256) 评论(0) 推荐(0) 编辑
摘要:变量 变量声明 作用域与变量覆盖 常量 常量声明 iota 参考资料 变量 变量声明 一般形式的变量声明,可以同时声明多个同类型变量,初始化为默认值或者可以手动赋初始值。 // case1 var identifier type // case2 var identifier1, identifie 阅读全文
posted @ 2021-12-13 13:46 HachikoT 阅读(30) 评论(0) 推荐(0) 编辑
摘要:go数据类型 基本类型 字符串类型 派生类型 参考资料 go数据类型 基本类型 | 类型 | 说明 | 占用内存 | 默认初始值 | | : : | : : | : : | : : | | bool | 布尔型 | 1字节 | false | | int8/16/32/64 | 有符号定长整型 | 阅读全文
posted @ 2021-12-13 13:44 HachikoT 阅读(32) 评论(0) 推荐(0) 编辑
摘要:安装go(windows) 安装go插件 参考资料 安装go(windows) go下载链接 双击安装包,按照指示进行安装。 这里我选择将go自定义安装到E盘,默认是C盘。 安装完成之后会自动设置好GOPATH的环境变量,默认为C:\Users\username\go,并且自动将go\bin目录自动 阅读全文
posted @ 2021-12-01 21:46 HachikoT 阅读(398) 评论(0) 推荐(0) 编辑
摘要:安装golang 方法一,安装包安装 方法二,yum安装 参考资料 安装golang 方法一,安装包安装 登录Download Golang,选择合适的安装包,这里我的操作系统是linux,芯片是amd64的,然后选择下载go1.16.10。 这里直接用命令行下载到centos7主机中。 wget 阅读全文
posted @ 2021-12-01 21:44 HachikoT 阅读(2122) 评论(0) 推荐(0) 编辑
摘要:channel 创建channel close channel channel复用 channel 创建channel 可以通过make函数来创建channel,channel是引用类型,空值为nil。 ch := make(chan int) close channel 使用close函数关闭ch 阅读全文
posted @ 2020-12-10 21:34 HachikoT 阅读(81) 评论(0) 推荐(0) 编辑
摘要:接口 interface 接口比较 类型断言 空接口 interface{} 参考资料 接口 interface go语言使用interface来实现多态,并且是非侵入的,不需要具体的类型来继承接口,只需要具体的类型提供指定的方法就可以了。 接口中不存在成员变量,也不存在方法实现,所以可以解决多继承 阅读全文
posted @ 2020-12-05 12:09 HachikoT 阅读(103) 评论(0) 推荐(0) 编辑
摘要:go闭包 go闭包遇到循环 参考资料 go闭包 在go语言中,函数是“一等公民”,所谓“一等公民”是指函数可以作为类型,函数对象可以像普通对象那样用来赋值,作为参数传递,作为返回值返回。 而go的闭包则是函数的高阶应用,所谓闭包是指引用了自由变量的匿名函数,被引用的自由变量和匿名函数对象一同存在,即 阅读全文
posted @ 2020-11-29 22:15 HachikoT 阅读(160) 评论(0) 推荐(0) 编辑
摘要:go map map初始化 增加数据 遍历数据 判断kv是否存在 go map map是一种无序的键值对的集合,可以通过key来快速检索数据,map是无序的,我们无法决定它的返回顺序,这是因为map是使用hash表来实现的。 map中的key类型必须是comparable的,所以golang中的bo 阅读全文
posted @ 2020-11-29 15:40 HachikoT 阅读(288) 评论(0) 推荐(0) 编辑
摘要:go字符串 和[]byte相互转换 包含中文的时候字符计数 遍历字符串 截取字符串 字符串拼接优化 不区分大小写操作 分割字符串 参考资料 go字符串 go中字符串是一个不可改变的utf-8字符序列,类型为string。 有两点值得注意: string可以为空(长度为0),但不会是nil。 stri 阅读全文
posted @ 2020-11-10 15:01 HachikoT 阅读(235) 评论(0) 推荐(0) 编辑
摘要:定义结构体 type struct_variable_type struct { member definition member definition ... member definition } 比如 type person struct { name string age uint } 访问 阅读全文
posted @ 2020-11-02 17:33 HachikoT 阅读(77) 评论(0) 推荐(0) 编辑