go
e3002
这个作者很懒,什么都没留下…
展开
-
golang: channel单项通道
http://www.topgoer.com单向通道有的时候我们会将通道作为参数在多个任务函数间传递,很多时候我们在不同的任务函数中使用通道都会对其进行限制,比如限制通道在函数中只能发送或只能接收。Go语言中提供了单向通道来处理这种情况。例如,我们把上面的例子改造如下:func counter(out chan<- int) { for i := 0; i < 100; i++ { out <- i } close(out)...转载 2021-01-06 09:27:01 · 528 阅读 · 0 评论 -
golang异常: main.go:1:1: expected ‘package‘, found ‘EOF‘
go build main.go 运行时报错如下:main.go:1:1: expected ‘package’, found ‘EOF’解决:ctrl+s保存下就可以了原创 2021-01-04 20:29:52 · 6530 阅读 · 2 评论 -
golang: goroutine与线程
可增长的栈OS线程(操作系统线程)一般都有固定的栈内存(通常为2MB),一个goroutine的栈在其生命周期开始时只有很小的栈(典型情况下2KB),goroutine的栈不是固定的,他可以按需增大和缩小,goroutine的栈大小限制可以达到1GB,虽然极少会用到这个大。所以在Go语言中一次创建十万左右的goroutine也是可以的。goroutine调度GPM是Go语言运行时(runtime)层面的实现,是go语言自己实现的一套调度系统。区别于操作系统调度OS线程。1.G很好理解,就是个goro原创 2021-01-04 20:18:22 · 476 阅读 · 0 评论 -
go字符串拼接方法
+拼接方式这种方式是我在写golang经常用的方式,go语言用+拼接,php使用.拼接,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。转自:go语言中文文档:www.topgoer.comfunc main() {s1 := “hello”s2 := “word”s3 := s1 + s2fmt.Print(s3) //s3 = “helloword”}sprintf函数s1 := “hello”s2 := “word”s3 := f原创 2021-01-04 08:36:44 · 3448 阅读 · 0 评论 -
gin之处理form表单获取参数和映射结构体
不管是传递json还是form传值注意 ,在结构体定义时 首字母必须大写//定义结构体Id int form:"id"Name string form:"name"//获取和绑定参数id := context.Query(“id”)var user Usercontext.Bind(&user)//定义结构体Id int json:"id"Name string json:"name"总结://如上:如果是form传值,结构体参数后面定义的是form,都可获取参数,也可绑定转载 2020-11-12 22:03:20 · 1743 阅读 · 0 评论 -
golang编码规范参考
格式化规范go默认已经有了gofmt工具,但是我们强烈建议使用goimport工具,这个在gofmt的基础上增加了自动删除和引入包.go get golang.org/x/tools/cmd/goimports不同的编辑器有不同的配置, sublime的配置教程:http://michaelwhatcott.com/gosublime-goimports/LiteIDE默认已经支持了goimports,如果你的不支持请点击属性配置->golangfmt->勾选goimports保存之前转载 2020-11-04 11:13:29 · 235 阅读 · 0 评论 -
go mod使用
go mod 相关命令 go mod download 下载go.mod文件中指明所有依赖 go mod tidy 整理现有的依赖,删除未使用的依赖 go mod graph 查看现有的依赖结构 go mod edit编写go.mod文件 go mod -replace 旧=新 lastest go mod -require go mod verfiy 校验一个模块是否被篡改过 go clean -modcache 清理所有已缓存的模块版本数据原创 2020-11-03 09:08:47 · 241 阅读 · 0 评论 -
Go 中关于方法的 receiver 的总结
关于这部分内容,在写代码时一直都是用指针类型的 receiver,但没有系统整理过规则,这里进行总结。首先是官方 FAQ 中说的那三条:第一条也是最重要的一条,方法是否要修改 receiver?其次是效率的考虑,如果 receiver 非常大,比如说一个大 struct,使用指针将非常合适。接下来是一致性,如果该类型的某些方法必须使用指针 receiver,剩下的也要使用指针。不论使用什么类型的 receiver,方法集要一致。还有一些其它的规则:实例和实例指针可以调用值类型和指针类型 rec转载 2020-11-02 22:37:52 · 1366 阅读 · 0 评论 -
Golang中database/sql包的学习
转载 2020-10-30 10:05:09 · 225 阅读 · 0 评论 -
报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of
GO111MODULE=“off”在GO111MODULE="off"的条件下,并且写的代码不在GOPATH/src下,也就是说下面的main.go不在GOPATH/src下,也就是说下面的main.go不在GOPATH/src下,也就是说下面的main.go不在GOPATH/src目录下面,同时我想要使用另一个module里面的内容,并且这个module不是标准库,或者说不在GOROOT里(一般我们不会修改GOROOT中的内容)...转载 2020-10-29 21:17:16 · 6456 阅读 · 6 评论 -
解决vscode编写go代码时提示过慢(gopls)
前言之前用的vscode的自动代码提示,发现太慢了,隔3,4秒才会出提示,所以换为Google推荐的 gopls来代替。下载过程方案一打开 VS Code 的setting, 搜索 go.useLanguageServe, 并勾选上.默认情况下, 会提示叫你reload,重新打开之后,右下角会自动弹出下载的框框,点击 install即可。如果下载时间过长,不成功,可以看方案二方案二直接上 github 下载,下载下来 之后go install github.com/golang/转载 2020-10-25 21:01:35 · 4260 阅读 · 0 评论