什么是Go?Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。Go的主要特点:类型安全和内存安全以非常直观和极低代价的方案实现高并发高效的垃圾回收机制快速编译(同时解决C语言中头文件太多的问题)为多核计算机×××能提升中的方案UTF-8编码支持-----Go存在的价值是什么?[GO 在谷歌:以软件工程为目的的语言设计请添加链接描述](https://www.oschina.net/translate/go-at-google-language-design-in-the-service-of-software-engineering)-----Go命令在命令行或终端输入go 即可查看所有支持的命令Go常用命令简介go env 获取Go环境变量PS C:\Users\scott> go envset GOARCH=amd64 #系统类型set GOBIN=C:\Users\scott\go\bin # 编译后生成的bin目录set GOCACHE=C:\Users\scott\AppData\Local\go-buildset GOEXE=.exeset GOFLAGS=set GOHOSTARCH=amd64set GOHOSTOS=windowsset GOOS=windowsset GOPATH=C:\Users\scott\go #Go 开发目录set GOPROXY=set GORACE=set GOROOT=D:\Applications\Go #Go安装目录set GOTMPDIR=set GOTOOLDIR=D:\Applications\Go\pkg\tool\windows_amd64set GCCGO=gccgoset CC=gccset CXX=g++set CGO_ENABLED=1set GOMOD=set CGO_CFLAGS=-g -O2set CGO_CPPFLAGS=set CGO_CXXFLAGS=-g -O2set CGO_FFLAGS=-g -O2set CGO_LDFLAGS=-g -O2set PKG_CONFIG=pkg-configset GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\scott\AppData\Local\Temp\go-build389094662=/tmp/go-build -gno-record-gcc-switchesgo get :获取远程包(需要提前安装git或hg)go run: 直接运行程序go build:测试编译, 检查是否有编译错误go fmt: 格式化源码go install :编译包文件并编译整个程序go test:运行测试文件go doc: 查看文档-----第一个程序:package mainimport "fmt"func main(){ fmt.Println("Hello world! 你好,世界!")}

-----Go导入package格式import "fmt"import "os"import "time"import "io"或import ( "fmt" "os" "time" "io")同理//常量定义const( PI = 3.14 const1 = "STRING" const2 = 2 const3 = 3)//全局变量var( name = "gopher" name1 = "1" name2 = 2 name3 = 3)//一般类型声明type( newType int type1 float32 type2 string type3 byte)导入包的别名import bieming "fmt"import . "fmt" (前面有一点,代指省略,有这功能,但不建议省用法)只能导入使用到的包,未使用到的需要用双斜线 // 内容 或 //*-----内容-------*//注释可见性规则Go语言中,使用大小写来决定该常量、变量、类型、接口、结构、或函数是否可以被外部包所调用:根据约定,函数名首字母小写,即为private 私有 外部无法调用函数名首字母大写,即为public 公有 外部可以调用Go基本类型- 布尔型:bool - 长度:1字节 - 取值范围: true,false - 注意事项:不可以用数字代表true或false- 整型:int/uint -根据运行平台可能为32或64位- 8位整型: int8/uint8 -长度:1字节 -取值范围:-128~127/0~255- 字节型:byte(uint8别名)- 16位整型:int16/uint16 - 长度:2字节 - 取值范围:-32768~32767/0~65535- 32位整型:int32(rune)/uint32 - 长度:4字节 - 取值范围:(-2147483648 到 2147483647)- 64位整型:int64/uint64 - 长度:8字节 - 取值范围:(-9223372036854775808 到 9223372036854775807)- 浮点型:float32/float64 - 长度:4/8字节 - 小数位:精确到7/15位小数位类型名称 有无符号 bit数int8 Yes 8uint8 No 8uint16 No 16int16 Yes 16int32 Yes 32int64 Yes 64uint32 No 32uint64 No 64int Yes 等于cpu位数uint No 等于cpu位数rune Yes 与 int32 等价byte No 与 uint8 等价uintptr No -- 复数类型:complex64/complex128 - 长度:8/16字节- 足够保存指针的32位或64位整型:uintptr- 其他类型: - array、struct、 string- 引用类型: - slice、map、chan- 接口类型:interface- 函数类型:func类型零值: 零值不等于空值,而是当变量被声明为某种类型后的默认值,通常情况下值类型默认值为0,bool为false,string为空字符串变量声明与赋值:全局变量使用var声明局部变量(函数体)可以使用下面方式: var a int = 1 var a,b,c,d = 1, 2, 3, 4 a,b,c,d := 1, 2, 3, 4