Go背景知识 go的特点(官网):
Build fast, reliable, and efficient software at scale
- Go is an open source programming language supported by Google
- Easy to learn and get started with
- Built-in concurrency and a robust standard library
- Growing ecosystem of partners, communities, and tools
go的特性:
简单:只有25个关键字,C37个,C++84个对于复杂任务,比如并发编程,内存管理,都有内置的并发支持及垃圾回收机制高效:编译的静态类型语言,可以使用指针直接访问内存生产力:简洁清晰的依赖管理以及独特的接口类型设计以及对编程方式的约束:支持复合不支持继承的扩展方式,转语言非常方便
go的应用:
云原生区块链
Go安装
1.官网下载
https://golang.google.cn/dl/
配置环境变量
go version
安装完成后,命令行输入go version可以查看是否安装成功
xxxx> go version
go version go1.17.7 windows/amd64
go env
go env可以查看当前生效的go环境参数配置
xxxx> go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=xxx\AppData\Local\go-build
set GOENV=xxx\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=xxx\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=xxx\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.7
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ 末小七\AppData\Local\Temp\go-build2034886303=/tmp/go-build -gno-record-gcc-switches
GOROOT
Go 语言安装根目录的路径,也就是 GO 语言的安装路径。
GOPATH若干工作区目录的路径。是我们自己定义的工作空间。
1.8版本以前必须配置这个环境变量,1.8之后如果没有使用默认值
windows默认值是%USERPROFILE%/go
Unix:$HOME/go
Mac:可以通过修改~/.bash_profile设置
GOBIN
GO 程序生成的可执行文件(executable file)的路径。
GO111MODULE设置为on
第一个go程序 hello world 目录结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OmqoZpPf-1646819609778)(image-20220309144929258.png)]
helloworld demopackage main
import "fmt"
func main() {
fmt.Println("hello world~")
}
tips
退出返回值 与其他语言的差异 go中main函数不支持任何返回值通过os.Exit来返回状态 错误の示例 正确の示例在java中,package名字跟目录名字是要保持一致的,但是go是没有这个约束的。
func main() {
fmt.Println("hello world~")
os.Exit(-1)
}
##########################################
hello world~
Process finished with the exit code -1
获取命令行参数
错误の示例
正确の示例
func main() {
if len(os.Args)>1 {
fmt.Println("args:",os.Args[1])
}
fmt.Println("hello world~")
os.Exit(0)
}
##########################################
D:\gocode\godemo\basic\firstfunc> go run hello.go test
args: test
hello world~
与其他语言的差异
main函数不支持传入参数使用os.Args来获取命令行参数
应用程序入口要求
必须是main包必须是main方法文件名不一定是mai.go
指令 go run
运行
go build编译go文件为二进制文件,go默认使用静态链接,编译完后只是个独立的二进制文件,可以copy到不同的机器上运行。在安装部署的时候,非常便携。
单元测试 源码文件以_test结尾测试方法以Test开头(大写开头表示包外可以访问) 示例
package test
import "testing"
func TestHello(t *testing.T){
t.Log("hello world test~")
}
##########################################
=== RUN TestHello
hello_test.go:6: hello world test~
--- PASS: TestHello (0.00s)
PASS
变量赋值 与其他语言的差异 赋值可以进行自动类型推断在一个赋值语句中可以对多个变量进行同时赋值go中可以使用 iota关键字快速设置连续值 示例
const (
Monday = iota + 1
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
func TestIota(t *testing.T) {
fmt.Println("Monday:", Monday)
fmt.Println("Tuesday:", Tuesday)
fmt.Println("Wednesday:", Wednesday)
fmt.Println("Thursday:", Thursday)
fmt.Println("Friday:", Friday)
fmt.Println("Saturday:", Saturday)
fmt.Println("Sunday:", Sunday)
}
##########################################
=== RUN TestIota
Monday: 1
Tuesday: 2
Wednesday: 3
Thursday: 4
Friday: 5
Saturday: 6
Sunday: 7
--- PASS: TestIota (0.00s)
PASS
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)