![](https://img-blog.csdnimg.cn/bdc76467babe480eaa4016ff877f144f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Go
文章平均质量分 63
go学习
THMAIL
这个作者很懒,什么都没留下…
展开
-
go语言踩坑:data race导致的输出结果与预期结果不一致
如果有同学进行更多的实现,会发现(1)即使不加fmt.print,改为加time.sleep;(2)或者把for{}换成time.sleep,或者换成select{}都会出现正常输出的情况,为什么??因为data race 导致的编译器行为异常,最终导致运行结果不可预测,就像这个问题一样,不知道为什么,且没有逻辑,没有规律,很难排查出问题所在;原创 2023-01-11 18:06:05 · 623 阅读 · 0 评论 -
Go 语言闭包详解
什么是闭包?闭包是由函数和与其相关的引用环境组合而成的实体。下面就来通过几个例子来说明 Go 语言中的闭包以及由闭包引用产生的问题。Go 语言闭包详解在说明闭包之前,先来了解一下什么是函数变量。在 Go 语言中,函数被看作是第一类值,这意味着函数像变量一样,有类型、有值,其他普通变量能做的事它也可以。 直接调用: 把函数当成变量一样赋值:;接着可以调用这个函数变量:。 注意:这里 后面没有圆括号,调用才有。 调用 的函数变量会导致 panic。 函数变量的零值是 ,这意味着它可以跟转载 2023-01-11 16:20:13 · 398 阅读 · 0 评论 -
Golang 在 Mac、Linux、Windows 下如何交叉编译
很多博客都提到要先增加对其它平台的支持,但是我跳过那一步,上面所列的命令也都能成功,且得到我想要的结果,可见那一步应该是非必须的,或是我所使用的Go版本已默认支持所有平台。Golang支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。上面的命令编译64位可执行程序,你当然应该也会使用386编译32位可执行程序。目标平台的操作系统(darwin、freebsd、linux、windows)目标平台的体系架构(386、amd64、arm)...原创 2022-07-15 09:42:25 · 439 阅读 · 0 评论 -
Go语言设计模式之函数式选项模式
在看OpenTelemetry-gin源码时遇到一个函数可以看到这个函数是以Option为参数的;点进去发现Option是一个接口,在内是这样使用该参数的:综上不难发现,如果我们要成功调用函数,就要实现一个Option类,该类主要用applay方法来进行参数的装配;调研发现这是go的一种设计模式:选项模式我们先定义一个OptionFunc的函数类型然后利用闭包为每个字段编写一个设置值的With函数:然后,我们定义一个默认的Option如下:最后编写我们新版的构造函数如下:测试一下:输出:原创 2022-07-14 10:37:11 · 695 阅读 · 0 评论 -
Jaeger SDK使用教程-go
Jaeger支持两种SDK,官方建议迁移到OpenTelemetry SDK,Client除安全修复,已不再更新;请提前搭建Jaeger环境,没搭建的看这里直接上示例代码,没有什么比看代码更直观的了二、Jaeger-Client使用1.通过agent发送2.发送给Collector参考:...原创 2022-07-13 15:14:12 · 417 阅读 · 0 评论 -
rpc error: code = Unavailable desc = connection error: desc = “transport: Error while dialing readin
go2sky-gRPC2022/07/06 10:11:30 report serviceInstance properties error rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing reading server HTTP response: unexpected EOF"原创 2022-07-06 10:15:41 · 7614 阅读 · 1 评论 -
彻底搞懂golang的GOROOT和GOPATH
**目录1、GOPATH 和 GOROOT2、修改 GOPATH 和 GOROOT3、HelloWord——GOPATH版4、一些踩坑经验**## 1、GOPATH 和 GOROOT不同于其他语言,go中没有项目的说法,只有包, 其中有两个重要的路径,***GOROOT*** 和 ***GOPATH***Go开发相关的环境变量如下:* GOROOT:GOROOT就是Go的安装目录,(类似于java的JDK)* GOPATH:GOPATH是我们的工作空间,保存go项目代码和第三方依赖转载 2022-06-23 16:58:12 · 2843 阅读 · 0 评论 -
go mod如何引入非go mod管理的包模块(如用go path管理的)
go mod如何引入非go mod管理的包模块(如用go path管理的)原创 2022-06-16 15:01:28 · 804 阅读 · 0 评论 -
go module安装本地离线包
本地有go模块源码,但没办法使用go get,go install等方式直接安装,解决办法:1.在本地项目目录下新建external文件夹(文件夹名随意)2.修改项目的go.mod文件,在最底部新增字段本质就是让module管理模块根据.mod文件去指定文件夹下寻找对应的go包......原创 2022-06-06 20:54:13 · 2675 阅读 · 0 评论 -
go常用命令
《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。在Go语言中,我们很多操作都是通过go命令进行的,比如我们要执行go文件的编译,就需要使用go build命令,除了build命令之外,还有很多常用的命令,这一次我们就统一进行介绍,对常用命令有一个了解,这样我们就可以更容易的开发我们的Go程序了。Go 开发工具概览go这个工具,别看名字短小,其实非常强大,是一个强大的开发工具,让我们打开终端,看看这个工具有哪些能力。 ...转载 2022-05-26 11:43:17 · 547 阅读 · 0 评论