随笔分类 -  go

摘要:func main() { count := 0 wg := sync.WaitGroup{} wg.Add(10) for i := 0; i < 10; i++ { go func() { defer wg.Done() for j := 0; j < 100000; j++ { count++ 阅读全文
posted @ 2021-03-30 09:49 hubb 阅读(178) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "time" ) func main(){ Go(func(){ fmt.Println("hello") panic("一路向北") }) time.Sleep(5 * time.Second) } func Go(x func()){ go 阅读全文
posted @ 2021-03-30 09:47 hubb 阅读(189) 评论(0) 推荐(0)
摘要:xorm 查询定义结构体Img []string `xorm:"img" json:"img"` 查询所有 invalid character 'è' looking for beginning of value 数据库 img 格式不一致造成 ["http://www.baidu.png","ht 阅读全文
posted @ 2021-03-26 11:46 hubb 阅读(991) 评论(0) 推荐(0)
摘要:什么是RPC 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。维基百科: 阅读全文
posted @ 2021-03-25 17:23 hubb 阅读(233) 评论(0) 推荐(0)
摘要:package main import ( "fmt" ) func fibol(c,quit chan int){ x,y := 1,1 for{ select{ case c <- x: x = y y = x+y case <- quit: fmt.Println("quit") return 阅读全文
posted @ 2021-03-25 15:48 hubb 阅读(154) 评论(0) 推荐(0)
摘要:我们在写代码的时候,有时候会想这个变量到底分配到哪里了?这时候可能会有人说,在栈上,在堆上。信我准没错… 但从结果上来讲你还是一知半解,这可不行,万一被人懵了呢。今天我们一起来深挖下 Go 在这块的奥妙,自己动手丰衣足食 问题 type User struct { ID int64 Name str 阅读全文
posted @ 2021-03-25 15:42 hubb 阅读(37) 评论(0) 推荐(0)
摘要:package mainimport ( "fmt" "reflect" )type resume struct { Name string `info:"name" doc:"我的名字"` Sex string `info:"Sex"`}func findTag(str interface{}) 阅读全文
posted @ 2021-03-18 08:47 hubb 阅读(265) 评论(0) 推荐(0)
摘要:go 项目的版本是 1.13.14 docker 服务的go 版本 1.15 版本不一致造成 代码修改 由 func SetCtXXXXX(ctx context.Context) context.Context { ctx = context.WithValue(ctx, XXXX, XX) ct 阅读全文
posted @ 2021-03-16 11:14 hubb 阅读(382) 评论(0) 推荐(0)
摘要:Go语言的 testing 包提供了三种测试方式,分别是单元(功能)测试、性能(压力)测试和覆盖率测试。 单元(功能)测试 在同一文件夹下创建两个Go语言文件,分别命名为 demo.go 和 demt_test.go,如下图所示: 具体代码如下所示: demo.go: package demo // 阅读全文
posted @ 2021-02-24 11:41 hubb 阅读(641) 评论(0) 推荐(0)
摘要:在Go语言中我们可以使用 time 包中的 Since() 函数来获取函数的运行时间,Go语言官方文档中对 Since() 函数的介绍是这样的。 func Since(t Time) Duration Since() 函数返回从 t 到现在经过的时间,等价于time.Now().Sub(t)。 【示 阅读全文
posted @ 2021-02-24 11:26 hubb 阅读(1036) 评论(0) 推荐(0)
摘要:Gin框架编写PUT接口使用BindJSON绑定参数报错,当结构体绑定参数有误时, 状态码为400,强制返回200,结果code还是400. 原因 : BindXXX方法都return c.MustBindWith(obj, binding.XXX)。如果绑定错误,则c.AbortWithError 阅读全文
posted @ 2021-02-08 11:01 hubb 阅读(2514) 评论(0) 推荐(0)
摘要:1 range 的简单回顾 Go 语言中,range 可以用来很方便地遍历数组(array)、切片(slice)、字典(map)和信道(chan) 1.1 array/slice 12345 words := []string{"Go", "语言", "高性能", "编程"}for i, s := 阅读全文
posted @ 2021-02-02 14:58 hubb 阅读(435) 评论(0) 推荐(0)
摘要:Go的常量const是属于编译时期的常量,即在编译时期就可以完全确定取值的常量。只支持数字,字符串和布尔,及上述类型的表达式。而切片,数组,正则表达式等等需要在运行时分配空间和执行若干运算才能赋值的变量则不能用作常量。这一点和Java,Nodejs(javascript)不同。Java的final和 阅读全文
posted @ 2021-01-26 16:34 hubb 阅读(1050) 评论(0) 推荐(0)
摘要:在Go中,类型断言和类型转换是一个令人困惑的事情,他们似乎都在做同样的事情。 这篇文章,我们将看到类型断言和类型转换实际上是如何截然不同的,并深入了解在Go中使用它们会发生什么。 首先,让我们看看它们长什么样…… 下面是一个类型断言的例子: var greeting interface{} = "h 阅读全文
posted @ 2021-01-22 09:34 hubb 阅读(441) 评论(0) 推荐(0)
摘要:go语言中支持的字符串拼接的方法有很多种,这里就来罗列一下 常用的字符串拼接方法 1.最常用的方法肯定是 + 连接两个字符串。这与python类似,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。 s1 := "字符串" s2 := "拼接" s3 : 阅读全文
posted @ 2021-01-06 11:40 hubb 阅读(364) 评论(0) 推荐(0)
摘要:清空slice 的所有元素package main import ( "fmt" ) //清空切面元素 func CleanSlice() { //方法一 通过 切片赋值 方式 清空 var Cslice []int = []int{1, 2, 3} fmt.Printf("清空前元素>>:\n") 阅读全文
posted @ 2021-01-06 09:52 hubb 阅读(124) 评论(0) 推荐(0)
摘要:panic支持抛出任意类型的异常(而不仅仅是error类型的错误),recover函数调用的返回值和panic函数的输入参数类型一致,它们的函数签名如下: func panic(interface{}) func recover() interface{} Go语言函数调用的正常流程是函数执行返回语 阅读全文
posted @ 2020-12-25 11:23 hubb 阅读(138) 评论(0) 推荐(0)
摘要:让我们演示一个文件复制的例子:函数需要打开两个文件,然后将其中一个文件的内容复制到另一个文件: func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if er 阅读全文
posted @ 2020-12-25 11:05 hubb 阅读(131) 评论(0) 推荐(0)
摘要:场景一:RPC调用 在主goroutine上有4个RPC,RPC2/3/4是并行请求的,我们这里希望在RPC2请求失败之后,直接返回错误,并且让RPC3/4停止继续计算。这个时候,就使用的到Context。 这个的具体实现如下面的代码。 package main import ( "context" 阅读全文
posted @ 2020-12-25 10:35 hubb 阅读(412) 评论(0) 推荐(0)
摘要:正文 Goland设置代码格式化 进入设置,按需选择要使用的, VsCode 使用的是 go fmt设置成功后每次手动保存会格式化你的代码 Goland设置前进后退按钮# 勾选该项即可在最上层出现前进后退的按钮, 点击即可前进后退 阅读全文
posted @ 2020-12-25 10:30 hubb 阅读(776) 评论(0) 推荐(0)