一起来go~go

109 阅读3分钟

简介

官网:golang.google.cn/

学习文档:golang.google.cn/learn/

第三方包获取:pkg.go.dev/

特点:

  • 天生支持并发
  • 语法简单,容易上手
  • 内置runtime,支持垃圾回收
  • 可直接编译成机器码,不依赖其他库
  • 丰富的便准库
  • 可跨平台编译
  • 部署维护成本低

安装后的配置

设置GOPROXY

# 获取依赖包的代理,修改为国内的
go env -w GOPROXY=https://goproxy.cn,direct 

设置GOPATH

在环境变量里面设置

需要安装的依赖包:

go get -v golang.org/x/tools/gopls
go get -v github.com/stamblerre/gocode
go get -v github.com/uudashr/gopkgs/v2/cmd/gopkgs
go get -v github.com/ramya-rao-a/go-outline

依赖包说说明

  • golang.org/x/tools: 提供了一系列用于开发Go语言的工具,如gopls等
  • golang.org/x/tools/gopls: 是一个基于Go语言的代码补全和导航工具,它可以帮助开发者更高效地编写和调试Go代码
  • golang.org/x/telemetry: 提供了一套用于收集和分析应用程序性能数据的库
  • github.com/sergi/go-diff: 是一个用于比较两个Go源代码文件差异的工具
  • honnef.co/go/tools: 提供了一些用于处理Go源代码的工具,如goimports(自动导入缺失的包)等
  • mvdan.cc/gofumpt: 是一个用于格式化Go源代码的工具,它可以自动调整代码格式以符合Go语言的最佳实践
  • mvdan.cc/xurls/v2: 是一个用于解析URL的库,它可以将URL分解为各个组成部分,方便开发者处理
  • golang.org/x/mod: 是一个用于管理Go模块的库,它可以帮助你更好地组织和管理项目的依赖关系
  • golang.org/x/sync: 提供了一组同步原语,如互斥锁、条件变量等,用于实现多线程编程中的同步机制
  • golang.org/x/text: 提供了一个用于处理Unicode文本的库,它可以帮助你更方便地处理和操作文本数据
  • golang.org/x/exp/typeparams: 提供了一个用于处理类型参数的库,它可以帮助你更方便地处理泛型编程中的类型参数问题
  • golang.org/x/sys: 提供了一个用于访问操作系统功能的库,它可以帮助你更方便地处理操作系统相关的任务
  • golang.org/x/vuln: 提供了一个用于管理已知安全漏洞的库,它可以帮助你更容易地识别和修复项目中的安全漏洞
  • github.com/stamblerre/gocode: 提供Go语言的代码自动补全功能,用于IDEs和编辑器
  • github.com/uudashr/gopkgs/v2/cmd/gopkgs: 命令行工具,帮助发现和使用Go语言软件包
  • github.com/ramya-rao-a/go-outline: VSCode插件,为Go源代码文件生成结构大纲以便于导航

命令

#初始化一个模块
go mod init example.com/greetings
#移除未使用的依赖,添加缺少的依赖,更新依赖信息
go mod tidy

# 编译运行程序
go run .

# 运行测试
go test
go test -v

# 编译包及其依赖项,但不安装结果
go build
#编译并安装软件包
go install

# 列出安装路径
 go list -f '{{.Target}}'
# 将安装路径加入Path
# Linux/Mac
export PATH=$PATH:/path/to/your/install/directory
# window
set PATH=%PATH%;C:\path\to\your\install\directory

不一样语法

:= :定义并初始化变量,会根据右侧数据推断类型

message := fmt.Sprintf("Hi, %v. Welcome!", name)
// 等价与下面这个
var message string
message = fmt.Sprintf("Hi, %v. Welcome!", name)

参考资料:

golang.google.cn/learn/

查看更多,请到这里