Go简单介绍

Go是一种新的语言,是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。它具有以下特点:

  • 编译速度快。
  • 更加容易的依赖分析。
  • Go是静态类型的语言,面向对象语言更轻量级。
  • Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。

Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。

Go环境安装

Go有三种安装方式,包括 Go标准包安装(推荐这种安装方式),第三方工具安装,Go源码安装。

本文主要讲解的 Mac 安装方式: 下载安装包地址: 下载地址
然后一路默认安装点击下一步。

go version
go version go1.19 darwin/amd64

Go环境变量配置

cd ~.bash_profilevi .bash_profile
export GOROOT=/usr/local/go
export GOPATH=/Users/your mac user/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
source ~/.bash_profilego env
/Users/rock/Library/Application Support/go/env"go env GOENV

GO中环境变量介绍

GOROOT

GOROOT

此值尽量不要修改,保持默认值即可。如果乱改了,然后发现无法在控制台中使用go命令了,需要修改环境变量中的值与其保持一致。

GOPATH

GOPATHworkspace

GOPATH的值不能与GOROOT相同。

export GOPATH=/Users/your mac user/go/go;$home/go

GOPATH目录下的每个工作一般分为三个子目录:src,pkg,bin. 第二目录中也是需要这三个目录的。

srcpkg.amaingo installbin

GOBIN

GOBIN
go installGOBINGOBINGOPATH/bin

GO111MODULE

go modulegomodulego.modonoff
go env -w GO111MODULE=on

GOPROXY

GOPROXYGolanggithub
GoGOPROXYhttps://proxy.golang.orghttps://goproxy.cn
go env -w GOPROXY=https://goproxy.cn,direct

GOMODCACHE

$GOPATH/pkg/modGOPATH

编写代码

GOPATHmain.go
package main
import "fmt"

func mian() {
    fmt.Println("hello world") 
}
go run main.go
go build

使用 Go Module

go mod init [module 名称]go mod tidygo get -v **********go get -u

常用的命令:

go mod init  # 初始化 go.mod
go mod tidy  # 更新依赖文件
go mod download  # 下载依赖文件

go mod vendor  # 将依赖转移至本地的 vendor 文件
go mod edit  # 手动修改依赖文件
go mod graph  # 打印依赖图
go mod verify  # 校验依赖

Go 命令

go build

$GOPATH/pkggo installgo build$GOPATH/bingo installgo build -o 路径/a.exego buildgo build a.gogo buildgo build -o astaxie.exepackagemainmain
packagepackage
go build_.go

参数这里就不介绍了。

go clean

这个命令是用来移除当前源码包和关联源码包里面编译生成的文件。这些文件包括

_obj/            旧的object目录,由Makefiles遗留
_test/           旧的test目录,由Makefiles遗留
_testmain.go     旧的gotest文件,由Makefiles遗留
test.out         旧的test记录,由Makefiles遗留
build.out        旧的test记录,由Makefiles遗留
*.[568ao]        object文件,由Makefiles遗留

DIR(.exe)        由go build产生
DIR.test(.exe)   由go test -c产生
MAINFILE(.exe)   由go build MAINFILE.go产生
*.so             由 SWIG 产生

go fmt

go强制了代码格式,可以用此命令来格式化文件。

go get

go install

go install

$GOPATH/pkg$GOPATH/bin

go test

*_test.go

go run

编译并运行Go程序