随笔分类 - Golang
摘要:需求 对变量并发执行10000次相加 示例1:裸奔 package main import ( "fmt" "sync" ) var xx int var wg111 sync.WaitGroup func add() { xx++ wg111.Done() } func main() { wg11
阅读全文
摘要:需求 高并发场景下,操作只执行一次,如读取配置、单例模式 实现 Go 的sync模块提供了只执行一次的解决方案:sync.Once, 它只有一个函数:Do func (o *Once) Do(f func()) {} 示例1:读取一次配置文件 package main import ( "fmt"
阅读全文
摘要:需求 读写共享map #1 常规map package main import ( "fmt" "strconv" "sync" ) func _110Test1() { wg := sync.WaitGroup{} mp := make(map[string]int) for i := 0; i
阅读全文
摘要:不加锁 package main import ( "fmt" "sync" ) var x=0 var wg107 sync.WaitGroup func add1() { for i := 0; i < 50000; i++ { x += 1 } wg107.Done() } func test
阅读全文
摘要:示例 package main import "fmt" func main() { ch := make(chan int, 1) for i := 0; i < 10; i++ { select { case x := <-ch: fmt.Println(x) case ch <- i: } }
阅读全文
摘要:背景 在实际工作中,我们总会限制goroutine数量——worker pool模式,控制goroutine数量,避免goroutine泄露与膨胀 示例 package main import ( "fmt" "time" ) func worker(w int, jobs <-chan int,
阅读全文
摘要:理念 GO语言并发模型CSP: 提倡通过通信共享内存,而非通过共享内存实现通信。 如果说goroutine是Go程序并发的执行体,channel就是它们之间的连接。channel是可以让一个goroutine发送特定值到另一个goroutine的通信机制 示例 关闭后任然可以读取 func main
阅读全文
摘要:需求 执行完所有子函数后退出主程序 #1. 串行执行 import ( "fmt" "time" ) func f1Sleep(val int) { time.Sleep(time.Duration(val)) fmt.Println(val) } func try0() { fmt.Println
阅读全文
摘要:接口是一个或多个方法签名的集合,任何类型的方法集中只要拥有与之对应的全部方法,就表示它"实现"了该接口无须在该类型上显式添加接口声明。 所谓对应方法,是指有相同名称、参数列表 (不包括参数名) 以及返回值。当然,该类型还可以有其他方法。(1)接口命名习惯以er结尾结构体。(2)接口只有方法签名,没有
阅读全文
摘要:https://blog.csdn.net/Joker_Jack/article/details/115013067
阅读全文
摘要:需求 命令行参数多个,以空格间隔输出 实现 实现1——拼接 func main() { var s, tmp string; //隐式赋值, string 赋值 "" for i:=1; i < len(os.Args); i++ { s += tmp + os.Args[i] tmp = " "
阅读全文
摘要:昨天 市面上有这么多语言为啥还需要开发Go这么个语言? 07年的一天,几位谷歌的大牛在讨论用C++开发一些有关庞大的分布式集群的工作,非常繁琐但很核心,很是闹心,后来听说C++又要添加35项新特性。大牛听了很是不爽啊,于是讨论能否可开发一款新的语言,运行快、编译快、开发还快。于是几位列举了新语言的主
阅读全文
摘要:开门见山写一个 package main import ( "fmt" "github.com/robfig/cron" "log" "strings" "time" ) func CronTask() { log.Println("******** ******* *******") } func
阅读全文
摘要:for range 遍历规律 字符串、数组、切片,返回下标、值 map返回key、val channel只返回通道内的值 举例 func ForArrayTest() { fmt.Println("for range: str") str := "hello" for key, val := ran
阅读全文
摘要:命令行安装 yum install golang 默认安装目录/usr/lib/golang/ (不同系统不一样,可通过搜索golang关键字查找: find / -name golang) 卸载 yum remove golang 配置环境变量 手动安装 官网下载安装包:链接 如:wget htt
阅读全文
摘要:功能 自动生产接口文档 安装 # 安装swaggo get -u github.com/swaggo/swag/cmd/swag # 安装 gin-swagger go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/
阅读全文
摘要:安装beengo go get github.com/astaxie/beego/validation 直接使用 package main import ( "github.com/astaxie/beego/validation" "log" ) type User struct { Name s
阅读全文
摘要:代码实现 main.go package main import ( "fmt" "github.com/jihite/go-gin-example/pkg/setting" "github.com/jihite/go-gin-example/routers" "net/http" ) func m
阅读全文
摘要:初始化 执行go mod init module-name,其中module-name为包名字,执行完后会生成go.mod文件,如下 module module-name go 1.13 拉取依赖 go get *** 如:go get github.com/jinzhu/gorm 更多参数 用 g
阅读全文