Go
liuhmmjj
对计算机编程很有兴趣
展开
-
Go select 语句使用场景
select 语句中除 default 外,每个 case 操作一个channel,要么读要么写select语句中除 default 外,各 case 执行顺序是随机的select 语句中如果没有 default 语句,则会阻塞等待任一 caseselect 语句中读操作要判断是否成功读取,关闭的 channel 也可以读取。原创 2024-06-07 20:11:52 · 1027 阅读 · 0 评论 -
Go 切片常用操作与使用技巧
在 Go 语言中的切片(slice)是一种灵活的动态数组,它可以自动扩展和收缩,是 Go 语言中非常重要的数据结构之一。切片是基于数组实现的,它的底层是数组,可以理解为对底层数组的抽象。它会生成一个,并通过切片长度关联到底层数组部分或者全部元素。原创 2024-05-23 19:06:15 · 1286 阅读 · 0 评论 -
Go select死锁分析
首先进入要上传代码的目录,例如,我要将test文件夹下的代码上传到gitlab,则,cd test1通常需要创建README.md文件,echo "# test" >> README.md1执行git命令,此命令会在当前目录下创建一个.git文件夹,git init将项目的所有文件添加到仓库中,git add .这个命令会把当前路径下的所有文件,添加到待上传......转载 2022-07-15 16:56:35 · 212 阅读 · 0 评论 -
Go struct和map转化为JSON串
struct和map转化为json串主要就是由于map无序,转化后的json串key是无序的如果参数是接收一个参数,那么通过结构体和map转化都是可以的代码示例:package mainimport ( "encoding/json" "fmt")type Person struct { Name string `json:"name"` Age int `json:"age"` Like []string `json:"like"` //不加`json:"like"原创 2022-05-17 16:54:43 · 901 阅读 · 0 评论 -
Go 常见使用问题记录
1.字符串分割,如果对""空字符串分割会怎么样func main() { str := "" sList := strings.Split(str, ",") fmt.Println(sList) if sList == nil { fmt.Println("分割空字符串后列表为空") } else { fmt.Println(fmt.Sprintf("分割空字符串后列表不为空,列表长度为:%d", len(sList))) for index, value := range s原创 2022-04-19 15:07:53 · 1152 阅读 · 0 评论 -
Go 字符串时间等相互转化以及时间加减等操作
1.获取当前时间的第二天零点时间,以及获取当前的23:59:59 的时间戳和date类型:package mainimport ( "fmt" "time")func main(){ timeStr := time.Now().Format("2006-01-02") fmt.Println(timeStr) //使用Parse 默认获取为UTC时区 需要获取本地时区 所以使用ParseInLocation t2, _ := time.ParseInLocation("2006-原创 2022-04-19 10:33:44 · 3171 阅读 · 0 评论 -
Go版本升级
需求:将Go版本升级到1.15版本中的最新版,例如我升级的时候1.15中最新的是版本是1.15.15升级步骤:先执行Go卸载brew uninstall go执行升级命令brew install go@1.15配置环境变量:# 编辑 ~/.zshrc文件,加入下面两行export GOPATH=$HOME/goexport PATH=$GOPATH/bin:$PATH# 保存后执行使配置立刻生效source ~/.zshrc然后执行:brew li.原创 2022-04-02 11:40:49 · 1363 阅读 · 0 评论 -
go 格式化输出
官方英文:https://golang.org/pkg/fmt/【简介】 fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf。格式“占位符”衍生自 C,但比 C 更简单。【打印】占位符:[一般] %v 相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名 %#v 相应值的 Go 语法表示 %T 相应值的类型的 Go 语法表示 %% 字面上的百分号,并非值的占位符[布尔] %t 单词 true 或 fal.转载 2022-01-05 21:07:42 · 580 阅读 · 0 评论 -
Go 排序
示例代码:import ( "fmt" "sort")type Person struct{ name string age int8}type PersonSortList []Personfunc (p PersonSortList) Len() int { return len(p)}func (p PersonSortList) Swap(i, j int) { p[i],p[j] = p[j],p[i]}func (p PersonSortList原创 2021-08-30 21:04:05 · 152 阅读 · 0 评论 -
go 打印 %v %+v %#v 的区别
v 值的默认格式%+v添加字段名(如结构体就先输出结构体的字段类型,再输出该字段的值)%#v 相应值的Go语法表示代码示例:package mainimport ( "fmt")type EqStruct struct{ Name string Age int32}func main(){ e1 := EqStruct{} e1.Name = "2" fmt.Printf("e1=%v \n", e1) //如果值是一个结构体,%+v...原创 2021-07-23 16:44:42 · 980 阅读 · 0 评论 -
Go time.Time比较时间大小
可以将待比较的时间格式化成相同格式的字符串,然后使用time的Before, After, Equal 方法即可.例子:func main(){ time1 := "2021-03-19 09:23:29" time2 := "2021-03-20 08:50:29" //先把时间字符串格式化成相同的时间类型 t1, err1 := time.Parse("2006-01-02 15:04:05", time1) t2, err2 := time.Parse("2006-01-02 1原创 2021-03-19 14:20:25 · 27030 阅读 · 0 评论 -
Go time获取本周一\下周一\下周日
主要用到了AddDate对时间进行加减天数,time.Weekday()得到今天是周几,周日对应的是0,周一到周六对应1,2,3,4,5,6我们接下来的计算代码是一周从周一开始周日结束,既周一到周日为同一周。package mainimport ( "fmt" "time")func main(){ now := time.Now() lastMonday ,err:= GetLastWeekMonday(now,"20060102") lastSunday ,err:=原创 2021-01-10 20:21:20 · 4796 阅读 · 0 评论