go
文章平均质量分 51
梓潇涵枫
这个作者很懒,什么都没留下…
展开
-
go语言interface设计的一点思考
转载自:https://blog.csdn.net/xmh19936688/article/details/106916795昨天到公司看到有人在群里把go跟java的interface做比较,提出go宣称的“非侵入式”好像也没那么好用,甚至跟java差不多。但实际上go语言的接口设计并不只是语法本身,也包含了开发流程跟思维方式在里面,下面把当时在群里的回答整理一下放出来。其实可以这样来理解:Java语言的开发风格是设计先行,即先定义规范,然后去挨个实现(就是先定义有什么方法,然后再写出来方法体)。转载 2021-02-09 11:14:10 · 190 阅读 · 1 评论 -
go语言搭建项目--grpc 以及grpc-getway使用
网上好多资料都是在linux下使用的,那咱么就说说在windows下的使用一、安装go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gatewaygo get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swaggergo get -u github.com/golang/protobuf/protoc-gen-go分别安装gateway、swagger、原创 2020-12-22 09:15:04 · 837 阅读 · 0 评论 -
go语言一个switch的坑
今天遇到一个案例,挺有意思,而且难以置信:func alwaysFalse() bool { return false}func main() { switch alwaysFalse() { case true: println(true) case false: println(false) }}猜一下输出什么?对,你猜错了,真实输出为true。看到这有一种骂娘的冲动,为啥呀,明明是false的呀。别急,咱们改一下,你要的false就出来了。func alwaysFa原创 2020-12-18 15:38:12 · 263 阅读 · 0 评论 -
Go语言关于defer的案例分析
遇到一个defer的问题很有意思,咱们来分析一下:func F(n int) func() int { return func() int { n++ return n }}func main() { f := F(5) defer func() { fmt.Println(f()) }() defer fmt.Println(f()) i := f() fmt.Println(i)}首先定义一个函数名称为F参数为int类型返回值为func() int的函数。返回值原创 2020-12-18 13:13:53 · 306 阅读 · 0 评论 -
Go语言方法值和方法表达式
遇到一个案例:type MyInt intfunc (n MyInt) test() { fmt.Println(n)}func main() { var n MyInt = 10 fmt.Println(n) n++ f1 := MyInt.test f1(n) n++ f2 := (*MyInt).test f2(&n)}咱们先来分析一下:1.定义了一个自定义类型MyInt类型为Int2.MyInt类型有一个方法为test()3.调用过程: 首先给原创 2020-12-18 10:43:49 · 354 阅读 · 0 评论 -
Go语言关于for range的案例分析
直接开始吧:func main() { var a = [5]int{1, 2, 3, 4, 5} var r [5]int for i, v := range a { if i == 0 { a[1] = 12 a[2] = 13 } r[i] = v } fmt.Println("r = ", r) fmt.Println("a = ", a)}输出:r = [1 2 3 4 5]a = [1 12 13 4 5]开始逐个分析:首先定义了一个i原创 2020-12-17 15:55:01 · 213 阅读 · 0 评论 -
Go语言关于defer,recover函数实例
遇到这样一种情况:func f(n int) (r int) { defer func() { r += n recover() }() var f func() defer f() f = func() { r += 2 } return n + 1}func main() { fmt.Println(f(3))}输出:7跟预想的完全不一样呀,颠覆了之前对defer()的认知原创 2020-12-17 10:33:00 · 330 阅读 · 0 评论 -
Go语言锁、协程以及waitGroup、信道案例分析
直接开始:现在有十张票有三个售票窗口一、使用信道控制程序(不加锁)var ticket = 10func main() { ch := make(chan int) go saletickets("售票口",ch) for v:=range ch { fmt.Println("剩余票数:",v) }}func saletickets(name string,ch chan int){ for{ if ticket > 0 { fmt.Println(name,"售原创 2020-12-16 13:23:40 · 258 阅读 · 0 评论 -
go语言gorm框架update更新数据库(postgresql)bool值不成功
今天遇到一个问题,更新数据库的时候,更新其他类型的值都可以成功更新,但是更新bool类型的值的时候一直更新不成功,怎么测都不成功。data = model.Resource{ IsShow: isshow, UpdateAt: updateAt,}err = db.DbConn.Table(resourceName).Where("id = ? ", resourceId).Update(&data).Errorif err != nil { LOG.Error("failed.原创 2020-11-13 15:17:54 · 4037 阅读 · 1 评论