您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Go语言

golang命令详解

时间:2023-05-20 16:47:38  来源:  作者:干饭人小羽

golang 命令详解

Github地址


1. build 编译包和依赖项

2. clean 删除对象文件和缓存的文件

3. doc与godoc 显示包文档

4. env 打印Go语言的环境信息

5. fix与go tool fix 会把指定包中的所有Go语言源码文件中旧版本代码修正为新版本的代码,升级版本时非常有用

6. fmt与gofmt 格式化go源文件

7. generate

8. get 下载并安装包和依赖(下载包和依赖,并对它们进行编译安装)

9. install 编译并安装指定包及它们的依赖包,

10. list 列出包和模块信息

11. mod 管理模块

12. run 编译并运行Go程序

13. test 测试包

14. tool 运行指定的go工具

15. version 查看当前go语言版本

16. vet 报告包中可能出现的错误

1. build 编译包和依赖项


build 编译包和依赖项

usage: go build [-o output] [-i] [build flags] [packages]

用法:  go build [-o output] [-i] [build 参数] [包]

可选参数:

    -o 编译单个包才能使用(不能同时对多个代码包进行编译),例如我们经常重新命名可执行文件名字

    -i 标志安装的包是目标的依赖项

    -a 强制重新构建已经更新的包

    -n 打印编译时执行的命令,但不真正执行

    -p 开启并发编译,默认情况下该值为CPU逻辑核数

    -race 开启竞态检测,只支持linux/amd64、freebsd/amd64、darwin/amd64和windows/amd64.

    -msan 内存扫描

    -v 编译包时打印包的名称

    -work 编译时打印临时工作目录的名称,退出时不删除它

    -x 打印编译时执行的命令(打印编译时会用到的所有命令)

    -asmflags '[pattern=]arg list',传递给每个go工具asm调用的参数

    -buildmode mode 使用编译模式, 更多信息请参见“go help buildmode”

    -compiler name 设置编译时使用编译器名,编译器名称只有2个选项(gccgo或gc)

    -gccgoflags '[pattern=]arg list' 传递每个gccgo编译器/链接器调用的参数列表

    -gcflags '[pattern=]arg list' 用于指定需要传递给go tool compile命令的参数的列表,更多信息参见(go tool compile)

    -installsuffix suffix 为了使当前的输出目录与默认的编译输出目录分离,可以使用这个标记.此标记的值会作为结果文件的父目录名称的后缀.其实,如果使用了-race标记,这个标记会被自动追加且其值会为race.如果我们同时使用了-race标记和-installsuffix,那么在-installsuffix标记的值的后面会再被追加_race,并以此来作为实际使用的后缀

    -ldflags '[pattern=]arg list' 用于指定需要传递给go tool link命令的参数的列表

    -linkshared

    -mod mode 模块下载方式,只有2个选项(readonly或vendor),更多信息请参见(go help modules)

    -pkgdir dir 设置包目录.编译器会只从该目录中加载代码包的归档文件,并会把编译可能会生成的代码包归档文件放置在该目录下

    -tags 'tag list'

    -toolexec 'cmd args' 用于在编译期间使用一些Go语言自带工具(如vet、asm等)的方式

示例:

go build [1个或多个go源文件, 或者包名, 或者包所在目录]

go build a.go b.go mAIn.go

go build main.go

go build hello

# 把main.go编译成可执行文件hello.exe

go build -o hello.exe  main.go

# 打印编译时执行的命令,但不真正执行

go build -n

# 答应工作目录

go build -work

2. clean 删除对象文件和缓存的文件


clean 删除执行其他命令时产生的文件、目录和缓存文件.

    具体地说.clean 会删除从导入路径对应的源码目录中,删除以下这些文件和目录

        _obj/            old object directory, left from Makefiles

        _test/          old test directory, left from Makefiles

        _testmain.go    old gotest file, left from Makefiles

        test.out        old test log, left from Makefiles

        build.out        old test log, left from Makefiles

        *.[568ao]        object files, left from Makefiles

        DIR(.exe)        from go build

        DIR.test(.exe)  from go test -c

        MAINFILE(.exe)  from go build MAINFILE.go

        *.so            from SWIG

usage: go clean [clean flags] [build flags] [packages]

  用法: go clean [clean 参数]  [build参数]  包

  可选参数:

    -i 会删除安装当前代码包所有产生的所有文件, 如果当前包是一个普通包(不是main包),则结果文件指的就是在工作区的pkg目录的相应目录下的归档文件.如果当前代码包中只包含一个命令源码文件, 则删除当前目录和在工作区的bin目录下的可执行文件和测试文件.

    -n 打印clean执行的命令,但不真正执行

    -r 删除当前代码包和所有的依赖包产生的文件、目录和缓存文件

    -x 打印clean执行的删除命令

    -cache 删除所有 go build 的缓存

    -testcache 删除当前包所有的测试结果

3. doc 显示包文档


doc与godoc 显示包或符号的文档, 更多用法请参考(godoc -h)

usage: go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]

用法:  go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]

可选参数:

    -c 区分参数包名的大小写.默认情况下,包名是大小写不敏感的

    -cmd 打印 main 包文档, 默认情况下不会打印 main 包文档

    -u 打印出所有的文档(同事包含可导出和不可导出实体)

示例:

# 显示 hellomod 包文档,(注意 hellomod 和 Hellomod是不同的包)

go doc -c hellomod

4. env 打印Go语言的环境信息


env 打印Go语言的环境信息

usage: go env [-json] [var ...]

用法: go env [-json] [变量 ...]

可选参数:

    -json 以json格式打印环境信息

示例:

# 以json格式打印所有环境信息

go env -json

# 以json格式只打印 GOOS 程序构建环境的目标操作系统

go env -json GOOS

# 打印所有环境信息

go env

# 只打印 GOOS 程序构建环境的目标操作系统

go env GOOS

5. fix与go tool fix 会把指定包中的所有Go语言源码文件中旧版本代码修正为新版本的代码,升级版本时非常有用


fix 会把指定包中的所有Go语言源码文件中旧版本代码修正为新版本的代码

usage: go fix [packages]

示例:

go fix testmod

go tool fix -h

usage: go tool fix [-diff] [-r fixname,...] [-force fixname,...] [path ...]

    -diff 不将修正后的内容写入文件, 而只打印修正前后的内容的对比信息到标准输出

    -force string 使用此参数后, 即使源码文件中的代码已经与Go语言的最新版本相匹配, 也会强行执行指定的修正操作.该参数值就是需要强行执行的修正操作的名称,多个名称之间用英文半角逗号分隔

    -r string 只对目标源码文件做有限的修正操作.该参数的值即为允许的修正操作的名称.多个名称之间用英文半角逗号分隔

6. fmt与gofmt 格式化go源文件

Go 开发团队不想要 Go 语言像许多其它语言那样总是在为代码风格而引发无休止的争论,浪费大量宝贵的开发时间,因此他们制作了一个工具:go fmt(gofmt)


fmt与gofmt 命令 格式化go源文件,fmt命令实际"gofmt -l -w"命令之上做了一层包装,我们一般使用

usage: go fmt [-n] [-x] [packages]

用法: go fmt [-n] [-x] 包

可选参数:

    -x 打印执行的命令

    -n 打印执行的命令,但不真正执行

示例:

# 格式化 testmod 包, 并显示执行命令

go fmt -x testmod

gofmt 命令

usage: gofmt [flags] [path ...]

用法: gofmt [参数] [路径 ...]

可选参数:

    -cpuprofile string 将cpu配置文件写入此文件

    -d 显示格式化前后差异,但不写入文件

    -e 打印所有错误, 默认只会打印不同行的前10个错误

    -l 列出需要格式化的文件

    -r string 重新规则,方便我们做批量替换,例如我们需要把hellomod.Hello替换成hellomod.HelloNew("hellomod.Hello -> hellomod.HelloNew")

    -s 简化代码

    -w 将结果直接写入到文件中



示例:

# 格式当前目录代码

gofmt -w ./

# 把当前目录中的“hellomod.Hello” 替换成 "hellomod.HelloNew"

gofmt -r "hellomod.Hello -> hellomod.HelloNew" -w ./

8. get 下载并安装包和依赖(下载包和依赖,并对它们进行编译安装)


get 命令 下载并安装包和依赖(下载包和依赖,并对它们进行编译安装)

usage: go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

用法: go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [包]

可选参数:

    -d 只下载不安装(只执行下载动作, 不执行安装动作)

    -f 只有在包含了-u参数的时候才有效.该参数会让命令程序忽略掉对已下载代码包的导入路径的检查.如果下载并安装的代码包所属的项目是你从别人那里Fork过来的,那么这样做就尤为重要了

    -fix 会下载代码包后先执行修正动作,而后再进行编译和安装

    -insecure 请谨慎使用, 允许使用不安全(http或者自定义域)的存储库中下载解析.

        即:允许命令程序使用非安全的scheme(如HTTP)去下载指定的代码包.如果你用的代码仓库(如公司内部的Gitlab)没有HTTPS支持,可以添加此标记.请在确定安全的情况下使用它.

    -t 同时也下载需要为运行测试所需要的包

    -u 强制从网络更新包和它的依赖包.默认情况下,该命令只会从网络上下载本地不存在的代码包,而不会更新已有的代码包

    -v 显示执行的命令

示例:

# 下载包

go get github.com/donvito/hellomod

9. install 编译并安装指定包及它们的依赖包,


install 编译并安装指定包及它们的依赖包,先生成中间文件(可执行文件或者.a包),然后把编译好的结果移到$GOPATH/pkg或者$GOPATH/bin

usage: go install [-i] [build flags] [packages]

用法: go install [-i] [编译 flags] [包]

可选参数:

    -i

示例:

# 安装包

go install github.com/gin-gonic/gin

10. list 列出包和模块信息


list 列出包和模块信息

usage: go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

用法: go list [-f format] [-json] [-m] [list flags] [build flags] [包]

可选参数:

    -f {{.字段名}} 查看指定的字段信息

    -json 以json格式打印信息

    -m 列出模块信息

更多用法请参考(go help list)

示例:

# 以json格式打印gApp包信息

go list -json gapp

# 打印模块信息

go list -m testmod

# 以json格式打印模块信息

go list -m -json testmod

# testmod模块打印结果:

{

        "Path": "testmod",

        "Main": true,

        "Dir": "/Users/zhaoweijie/go/src/business-card/Docker-compose/go-tutorials/9/examples/testmod",

        "GoMod": "/Users/zhaoweijie/go/src/business-card/docker-compose/go-tutorials/9/examples/testmod/go.mod"

}

11. mod 管理模块


mod 管理模块

Usage: go mod <command> [arguments]

用法: go mod <命令> [参数]

可选命令<command>: go help mod <command>

    download    下载模块到本地缓存

        usage: go mod download [-json] [modules]

          用法:

        可选参数:

            -json

        示例:

            # 下载模块,以json格式打印模块信息

            go mod download -json github.com/qq1060656096/hellomod 

            # json格式打印 github.com/qq1060656096/hellomod 模块信息

            {

                    "Path": "github.com/qq1060656096/hellomod",

                    "Version": "v1.0.0",

                    "Info": "/Users/zhaoweijie/go/pkg/mod/cache/download/github.com/qq1060656096/hellomod/@v/v1.0.0.info",

                    "GoMod": "/Users/zhaoweijie/go/pkg/mod/cache/download/github.com/qq1060656096/hellomod/@v/v1.0.0.mod",

                    "Zip": "/Users/zhaoweijie/go/pkg/mod/cache/download/github.com/qq1060656096/hellomod/@v/v1.0.0.zip",

                    "Dir": "/Users/zhaoweijie/go/pkg/mod/github.com/qq1060656096/hellomod@v1.0.0",

                    "Sum": "h1:O66u/mTlM4cHHdwuKPNpUBmJor2XOv0Wa0j+qfOwAN4=",

                    "GoModSum": "h1:TOAQUVNcJP1uykhVNbIcfTsdYdjs2zrIYEtpAGWpcqg="

            }

    edit  提供命令来编辑go.mod文件, 主要用于工具或脚本

        usage: go mod edit [editing flags] [go.mod]

        用法: go mod edit [editing flags] [go.mod]

        可选参数:

            -fmt 只会格式化go.mod文件

            -module 更改模块路径

            -require=path@version 添加模块依赖

                示例:

                    # 添加hellomod模块v1.0.0版本

                    go mod edit -require=github.com/qq1060656096/hellomod@v1.0.0

            -droprequire=path 删除模块依赖

                示例:

                    # 删除hellomod模块

                    go mod edit -droprequire=github.com/qq1060656096/hellomod

            -exclude=path@version 排查模块

                # 排除hellomod模块v1.0.0版本

                go mod edit -exclude=github.com/qq1060656096/hellomod@v1.0.0

            -dropexclude=path@version 删除排除的模块(恢复排除的模块)

                # 恢复排除hellomod模块v1.0.0版本

                go mod edit -dropexclude=github.com/qq1060656096/hellomod@v1.0.0

            -replace=old[@v]=new[@v] 替换模块

                示例:

                    # hellomod模块v1.0.0版本替换成v2.0.0版本

                    go mod edit -replace=github.com/qq1060656096/hellomod@v1.0.0=github.com/qq1060656096/hellomod@v2.0.0

            -dropreplace=old[@v]

            -print 打印结果,不会操作go.mod文件

            -json 以json格式打印结果,不会操作go.mod文件

    graph  打印模块需求图

        usage: go mod graph

        用法: go mod graph

    init    在当前⽂件夹下初始化⼀个新的模块(创建go.mod⽂件)

        usage: go mod init [module]

        用法: go mod init [模块名]

        示例:

            # 创建“github.com/qq1060656096/hellomod”模块

            go mod init github.com/qq1060656096/hellomod

    tidy    整理模块(增加缺少的模块,删除未⽤的模块)

        usage: go mod tidy [-v]

        用法: go mod tidy [-v]

        可选参数:

            -v 打印已经删除的模块信息

        示例:

            # 整理模块,并打印已经删除的模块

            go mod tidy -v

    vendor  将依赖复制到vendor下

        usage: go mod vendor [-v]

        用法: go mod vendor [-v]

        可选参数:

            -v 打印复制到vendor的所有包和模块

        示例:

            # 打印复制到vendor的所有包和模块

            go mod vendor -v

    verify  校验依赖的HASH码,验证检查当前模块的依赖, 如果依赖本有更改就使用之前的, 如果所有模块都没有更改,就打印"all modules verified

", 否则就报告(打印)已更改的模块

        usage: go mod verify

        用法: go mod verify

        示例:

            go mod verify

    why    解释为什么需要依赖

        usage: go mod why [-m] [-vendor] packages...

        用法: go mod why [-m] [-vendor] packages...

        可选参数

            -vendor

            -m

12. run 编译并运行Go程序


run 命令 编译并运行Go程序

usage: go run [build flags] [-exec xprog] package [arguments...]

用法: go run [编译 flags] [-exec xprog] 包 [arguments...]

可选参数: 其他参数请参考(go help build)

    -exec

示例:

# 运行maing.go

go run main.go

# 运行maing.go并开启竞态检测(开发时建议开启这个选项)

go run -race main.go

13. test 测试包


go test 用于测试包

usage: go test [build/test flags] [packages] [build/test flags & test binary flags]

    -c 把包编译二进制测试包, 注意不会运行, 需要你手动执行二进制测试

        示例:

            go test -c package_import_path

            go test -c 包的导入路径

            1. go test -c 在当前目录生成二进制测试

            2. go test -c go test -c go-tutorials/8/examples/demo1

    -exec 运行二进制测试

        示例:

            go test -c -exec demo1.test

    -json 运行测试,并将结果输出为json格式

        示例:

            go test -json path

            1. go test -json 测试当前包

            2. go test -json ./

    -o 把测试编译成自己命名二进制包, 默认仍然会运行测试(除非指定-c或者-i)

        示例:

            go test -o file_name

            go test -o 文件名

            1. go test -o demo1.custom_name.test

    -bench 运行基准测试, 默认情况下不运行

        示例:

            go test -bench regexp

            go test -bench 正则表达式

            1. go test -bench 运行所有基准测试

            2. go test -bench=. 运行所有基准测试

            3. go test -bench=hah 运行指定的基准测试

    -benchtime 基准测试,持续时间(默认1秒)



    -count 运行测试次数

        示例:

            go test -count n

            go test -count 次数

            1. go test -count 10 运行所有的测试10次

    -cover 覆盖率统计, 注意覆盖率统计是通过代码注释来工作的

    -cpu 指定测试cpu数量

        示例:

            go test -cpu 1,2,4

            go test -cpu cpu数量

            1. go test -cpu 8 指定8个cpu

    -list regexp 列出匹配的测试

        示例:

            go test -list regexp

            go test -list 正则表达式

            1. go test -list Login 列出demo1中的测试

    -v 详细输出运行时记录所有的测试

        示例:

            go test -v

14. tool 运行指定的go工具


tool 命令 运行指定的go工具

usage: go tool [-n] command [args...]

用法: go tool [-n] 命令 [args...]

可选参数:

    -n 打印要执行的命令, 但是不真正的执行

示例:

# 打印vet工具执行的命令

go tool -n vet

** go tool 工具列表 **


# go tool: 列表工具列表

# go tool 工具 -h: 查看工具帮助文档

# 查看vet工具帮助文档: go tool vet -h

addr2line

api

asm

buildid

cgo

compile

cover

dist

doc

fix

link

nm

objdump

pack

pprof 可以帮助开发者快速分析及定位各种性能问题,如 CPU 消耗、内存分配及阻塞分析

test2json

trace

vet 报告包中可能出现的错误,开发时建议使用这个工具(fmt printf函数参数不对或者声明结构体 tag声明不对等)

15. version 查看当前go语言版本


version 查看go当前的版本

usage: go version

示例:

# 查看go当前的版本

go version

16. vet 报告包中可能出现的错误


vet 静态检查工具,报告包中可能出现的错误, 开发时建议使用这个工具(fmt printf函数参数不对或者声明结构体 tag声明不对等)

usage: go vet [-n] [-x] [build flags] [vet flags] [packages]

用法: go vet [-n] [-x] [编译参数] [vet flags] [包]

可选参数:

    -n 打印要执行的命令, 但是不真正的执行

    -x 打印执行的命令

更多参数请参考(go help build)

示例:

# 检测 testmod 包中可能存在的问题

go vet testmod



Tags:golang   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
慢聊Golang协程池Ants实现原理
大家都知道goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理,Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。创建一个goroutine大小大概在2k左...【详细内容】
2023-12-27  Search: golang  点击:(94)  评论:(0)  加入收藏
基于Go-Kit的Golang整洁架构实践
简介Go是整洁架构(Clean Architecture)的完美选择。整洁架构本身只是一种方法,并没有告诉我们如何构建源代码,在尝试用新语言实现时,认识到这点非常重要。自从我有了使用Ruby o...【详细内容】
2023-12-25  Search: golang  点击:(156)  评论:(0)  加入收藏
Golang清晰代码指南
发挥易读和易维护软件的好处 - 第一部分嗨,开发者们,清晰的代码是指编写易于阅读、理解和维护的软件代码。它是遵循一组原则和实践,优先考虑清晰性、简单性和一致性的代码。清...【详细内容】
2023-12-18  Search: golang  点击:(131)  评论:(0)  加入收藏
如何优雅的组织Golang项目结构
一个Go项目的结构设计始终遵循Go语言的简洁高效理念。一个合理和良好的布局可以提高代码的可读性,简化依赖管理,并优化编译过程。像cmd、internal和docs这样的目录是标准Go项...【详细内容】
2023-12-06  Search: golang  点击:(169)  评论:(0)  加入收藏
从 Discord 的做法中学习 — 使用 Golang 进行请求合并
正如你可能之前看到的,Discord去年发布了一篇有价值的文章,讨论了他们成功存储了数万亿条消息。虽然有很多关于这篇文章的YouTube视频和文章,但我认为这篇文章中一个名为“数据...【详细内容】
2023-11-24  Search: golang  点击:(257)  评论:(0)  加入收藏
使用Golang进行自动化的20个库
Golang,也被称为Go,是一种静态类型的编译型编程语言,由Robert Griesemer,Rob Pike和Ken Thompson在Google设计。它在2009年推出,旨在解决其他编程语言在并发编程、垃圾回收和代码...【详细内容】
2023-11-23  Search: golang  点击:(206)  评论:(0)  加入收藏
Golang 中的 Bytes 包详解之 Bytes.Buffer
上篇文章详细讲解了一次性密码 OTP 相关的知识,基于时间的一次性密码 TOTP 是 OTP 的一种实现方式。这种方法的优点是不依赖网络,因此即使在没有网络的情况下,用户也可以生成密...【详细内容】
2023-11-07  Search: golang  点击:(261)  评论:(0)  加入收藏
聊聊Golang饱受争议的Error
一、error是什么?在C中,返回错误通过errno.h中的错误代码来表示,比如0代表No error,也就是没有错误;2代表No such file or directory,也就是找不到指定路径的文件或文件夹;5代表Inp...【详细内容】
2023-11-06  Search: golang  点击:(256)  评论:(0)  加入收藏
使用示例和应用程序全面了解高效数据管理的Golang MySQL数据库
Golang,也被称为Go,已经成为构建强大高性能应用程序的首选语言。在处理MySQL数据库时,Golang提供了一系列强大的库,简化了数据库交互并提高了效率。在本文中,我们将深入探讨一些...【详细内容】
2023-10-29  Search: golang  点击:(307)  评论:(0)  加入收藏
Golang中的强大Web框架
揭示Fiber在Go Web开发中的特点和优势在不断发展的Web开发领域中,选择正确的框架可以极大地影响项目的效率和成功。介绍一下Fiber,这是一款令人印象深刻的Golang(Go语言)Web框架...【详细内容】
2023-10-26  Search: golang  点击:(258)  评论:(0)  加入收藏
▌简易百科推荐
宝藏级Go语言开源项目——教你自己动手开发互联网搜索引擎
DIYSearchEngine 是一个能够高速采集海量互联网数据的开源搜索引擎,采用 Go 语言开发。Github 地址:https://github.com/johnlui/DIYSearchEngine运行方法首先,给自己准备一杯...【详细内容】
2024-03-12  OSC开源社区    Tags:Go语言   点击:(19)  评论:(0)  加入收藏
Go Gin框架实现优雅地重启和停止
在Web应用程序中,有时候我们需要重启或停止服务器,无论是因为更新代码还是进行例行维护。在这种情景下,我们需要保证应用程序的可用性和数据的一致性。这就需要优雅地关闭和重...【详细内容】
2024-01-30  源自开发者  微信公众号  Tags:Go   点击:(67)  评论:(0)  加入收藏
如何让Go程序以后台进程或daemon方式运行
本文探讨了如何通过Go代码实现在后台运行的程序。最近我用Go语言开发了一个WebSocket服务,我希望它能在后台运行,并在异常退出时自动重新启动。我的整体思路是将程序转为后台...【详细内容】
2024-01-26  Go语言圈  微信公众号  Tags:Go程序   点击:(60)  评论:(0)  加入收藏
深入Go底层原理,重写Redis中间件实战
Go语言以其简洁、高效和并发性能而闻名,深入了解其底层原理可以帮助我们更好地利用其优势。在本文中,我们将探讨如何深入Go底层原理,以及如何利用这些知识重新实现一个简单的Re...【详细内容】
2024-01-25  547蓝色星球    Tags:Go   点击:(67)  评论:(0)  加入收藏
Go 内存优化与垃圾收集
Go提供了自动化的内存管理机制,但在某些情况下需要更精细的微调从而避免发生OOM错误。本文将讨论Go的垃圾收集器、应用程序内存优化以及如何防止OOM(Out-Of-Memory)错误。Go...【详细内容】
2024-01-15  DeepNoMind  微信公众号  Tags:Go   点击:(63)  评论:(0)  加入收藏
Go函数指针是如何让你的程序变慢的?
导读Go 语言的常规优化手段无需赘述,相信大家也能找到大量的经典教程。但基于 Go 的函数值问题,业界还没有太多深度讨论的内容分享。本文作者根据自己对 Go 代码的使用与调优...【详细内容】
2024-01-15  腾讯云开发者  微信公众号  Tags:Go函数   点击:(88)  评论:(0)  加入收藏
Go编程中调用外部命令的几种场景
在很多场合, 使用Go语言需要调用外部命令来完成一些特定的任务, 例如: 使用Go语言调用Linux命令来获取执行的结果,又或者调用第三方程序执行来完成额外的任务。在go的标准库...【详细内容】
2024-01-09  suntiger    Tags:Go编程   点击:(107)  评论:(0)  加入收藏
Go 语言不支持并发读写 Map,为什么?
Go语言的map类型不支持并发读写的主要原因是并发读写会导致数据竞态(data race),这意味着多个 goroutine 可能同时访问并修改同一个 map,从而引发不确定的结果。在Go语言的设计...【详细内容】
2024-01-05  Go语言圈  微信公众号  Tags:Go 语言   点击:(81)  评论:(0)  加入收藏
Go微服务入门到容器化实践
Go微服务入门到容器化实践Go 是一门高效、现代化、快速增长的编程语言,非常适合构建 Web 应用程序。而 Docker 是一种轻量级的容器化技术,能够使得您的应用程序在任何地方运行...【详细内容】
2024-01-01  大雷家吃饭    Tags:Go微服务   点击:(63)  评论:(0)  加入收藏
你是否想知道如何应对高并发?Go语言为你提供了答案!
并发编程是当前软件领域中不可忽视的一个关键概念。随着CPU等硬件的不断发展,我们都渴望让我们的程序运行速度更快、更快。而Go语言在语言层面天生支持并发,充分利用现代CPU的...【详细内容】
2023-12-29  灵墨AI探索室  微信公众号  Tags:Go语言   点击:(110)  评论:(0)  加入收藏
站内最新
站内热门
站内头条