随笔分类 -  go

go os.signal 信号控制
摘要:package main import ( "fmt" "os" "os/signal" "syscall" "time" ) func main() { //创建监听退出chan c := make(chan os.Signal) //监听指定信号 ctrl+c kill signal.Notif 阅读全文

posted @ 2023-10-26 16:33 running-fly 阅读(26) 评论(0) 推荐(0) 编辑

go 格式化json
摘要:package main import ( "bytes" "encoding/json" "fmt" ) func main() { // 原始 JSON 字符串 var jsonStr = []byte(`{"Name":"Gopher","Title":"Programmer","Contac 阅读全文

posted @ 2023-10-20 09:17 running-fly 阅读(202) 评论(0) 推荐(0) 编辑

channel 通道错误的使用例子
摘要:1.向已经关闭的通道发送值,引起panic错误 package main import "fmt" func recv(c chan int) { ret := <-c fmt.Println("接收成功", ret) } func main() { ch := make(chan int) go 阅读全文

posted @ 2023-10-10 10:26 running-fly 阅读(43) 评论(0) 推荐(0) 编辑

go 循环链表
摘要:package main import ( "fmt" ) type Node struct{ Data int Next *Node } type CircularLinkedList struct { Head *Node Tail *Node } func NewCircularLinkedL 阅读全文

posted @ 2023-07-21 19:33 running-fly 阅读(16) 评论(0) 推荐(0) 编辑

go 结构体嵌套interface
摘要:package main import "fmt" //结构体嵌套接口,可以在结构体绑定的方法直接实现接口中的方法,直接调用接口中的方法 type aa interface{ a() b() } type world struct{ aa Age int } func(h world)a(){ fm 阅读全文

posted @ 2023-07-21 10:04 running-fly 阅读(8) 评论(0) 推荐(0) 编辑

go 单链表的增加,删除,翻转
摘要:package main import "fmt" //单链的数据结构 type Node struct { value int next *Node } //单链表,head 头结点表示单链表 type List struct { head *Node } //创建单链表 func createO 阅读全文

posted @ 2023-07-19 10:01 running-fly 阅读(11) 评论(0) 推荐(0) 编辑

go 给一个切片,将其写入到一个单链表中
摘要:package main import "fmt" // 功能:实现一个单链表(给一个切片,将其写入到一个单链表中) type Node struct { Value int Next *Node } func create(slice []int) *Node { if len(slice) == 阅读全文

posted @ 2023-07-14 11:03 running-fly 阅读(8) 评论(0) 推荐(0) 编辑

windows golang 多版本管理
摘要:下载g 软件包 源代码链接 https://github.com/voidint/g 二进制包连接 https://github.com/voidint/g/releases 在%USERFILE%目录下.g目录创建把解压出来的g.exe 放到bin目录下【例如C:\Users\ext.zhangx 阅读全文

posted @ 2023-01-11 13:15 running-fly 阅读(448) 评论(0) 推荐(0) 编辑

defer
摘要:package main import "fmt" // defer 把函数放到栈中,最先定义的最后执行 func a() { i := 0 defer fmt.Println(i) // 放到函数栈中的时候也把值传入进去了 i++ defer func(i int) { fmt.Println(i 阅读全文

posted @ 2022-10-17 13:23 running-fly 阅读(11) 评论(0) 推荐(0) 编辑

go select case 随机调用
摘要:package main import ( "fmt" "runtime" ) /* 1. go select是一种仅能用于channel发送和接收消息的语句,此语句运行期间是阻塞的;当 select中没有case语句的时候,会阻塞当前goroutine 2. select是go在语言层面提供的IO 阅读全文

posted @ 2022-10-17 11:26 running-fly 阅读(32) 评论(0) 推荐(0) 编辑

go json.Marshal 和 json.Unmarshal与结构体
摘要:结构体属性名字小写会被忽略 package main import ( "encoding/json" "fmt" ) type People struct { name string `json:"name"` Height string `json:"height"` } type Studen 阅读全文

posted @ 2022-10-17 11:03 running-fly 阅读(216) 评论(0) 推荐(0) 编辑

panic,recover 爆出异常,和捕获
摘要:package main import ( "fmt" "time" ) func main() { f() fmt.Println("main end") } /* 1.多个defer 执行,最先定义的在栈底,最后定义的在栈顶,所有最后定义的最先执行 2.定义的defer里面的panic ,可以被 阅读全文

posted @ 2022-09-21 15:20 running-fly 阅读(44) 评论(0) 推荐(0) 编辑

Go中三个点(...)用法
摘要://接受可变长参数 func arg(args ...string){ for i,v:=range args{ fmt.Printf("index %d, value %v \n",i,v) } } func main(){ temp:=[]string{"111","4555"} arg(tem 阅读全文

posted @ 2022-09-01 22:27 running-fly 阅读(36) 评论(0) 推荐(0) 编辑

go makefile使用详解
摘要:参考文档 https://www.w3cschool.cn/mexvtg/adisqozt.html 一 . 目录和文件内容 文件所在目录 goproject├── blog├── blog-linux├── blog-windows├── main.go└── Makefile Makefile 阅读全文

posted @ 2022-07-22 11:02 running-fly 阅读(368) 评论(0) 推荐(0) 编辑

go grpc protobuf 使用
摘要:1.下载protoc https://github.com/protocolbuffers/protobuf/releases,解压出 protoc.exe 放到到GOROOT目录下 2.下载 protoc-gen-go 文件 go install github.com/golang/protobu 阅读全文

posted @ 2022-07-15 15:17 running-fly 阅读(217) 评论(0) 推荐(0) 编辑

go 协程之WaitGroup超时控制
摘要:package main import ( "fmt" "sync" "time" ) // 调用示例 func main() { var w = sync.WaitGroup{} var ch = make(chan bool) w.Add(2) go func() { time.Sleep(ti 阅读全文

posted @ 2022-01-21 15:25 running-fly 阅读(431) 评论(0) 推荐(0) 编辑

Go多协程并发环境下的错误处理
摘要:引言 在Go语言中,我们通常会用到panic和recover来抛出错误和捕获错误,这一对操作在单协程环境下我们正常用就好了,并不会踩到什么坑。但是在多协程并发环境下,我们常常会碰到以下两个问题。假设我们现在有2个协程,我们叫它们协程A和B好了: 如果协程A发生了panic,协程B是否会因为协程A的p 阅读全文

posted @ 2022-01-21 15:17 running-fly 阅读(490) 评论(0) 推荐(0) 编辑

go 协程控制之context.WithTimeout的使用
摘要:简言 1. context包的WithTimeout()函数接受一个 Context 和超时时间作为参数,返回其子Context和取消函数cancel 2. 新创建协程中传入子Context做参数,且需监控子Context的Done通道,若收到消息,则退出 3. 需要新协程结束时,在外面调用 can 阅读全文

posted @ 2022-01-21 10:21 running-fly 阅读(1296) 评论(0) 推荐(0) 编辑

go 协程控制之sync.Once{}
摘要:sync.Once.Do(f func())是一个挺有趣的东西,能保证once只执行一次,无论你是否更换once.Do(xx)这里的方法,这个sync.Once块只会执行一次。 package main import ( "fmt" "sync" "time" ) var once sync.Onc 阅读全文

posted @ 2022-01-20 19:24 running-fly 阅读(93) 评论(0) 推荐(0) 编辑

go 算法之冒泡算法
摘要:package main import "fmt" //冒泡排序 升序 //每轮都是相邻的两个元素两两比较,把最大的元素升到最后 func maopao(arr []int) []int { //列表长度 len := len(arr) //外层控制比较轮数 for i := 1; i < len; 阅读全文

posted @ 2022-01-19 23:29 running-fly 阅读(103) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示