什么是Go?
Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态的高效开之间拥有良好平衡点的一门编程语言。
Go的主要特点有哪些?
- 类型安全和内存安全
- 以非常直观和极低代价的方案实现高并发
- 高效的垃圾回收机制
- 快速编译(同时解决C语言中)
- 为多核计算机提供性能提升的方案
- UTF-8编码支持
Go存在的价值是什么?
Go在谷歌: 以软件工程为目的语言设计
Go环境变量
[chentiangang@Mac.local ~]$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64" #交叉编译的架构
GOHOSTOS="darwin" #交叉编译的系统
GOOS="darwin"
GOPATH="/Users/chentiangang/go" #工作目录
GORACE=""
GOROOT="/usr/local/go" #安装目录
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ht/mz9p76vd0mq673ysl1hm0p7h0000gp/T/go-build286554756=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
Go命令
go get #获取远程包(需要提前安装git或hg)
go run #直接运行程序
go build #测试编译,检查是否有编译错误
go fmt #格式化源码(部分IDE在保存时自动调用)
go install #编译包文件并编译整个程序
go test #运行测试文件
godoc -http :8080 #查看文档
Go语言的Hello,world
package main
import (
"fmt"
)
func main() {
fmt.Printf("Hello, world.")
}
Go内置关键字(25个均为小写)
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
Go注释方法
- // 单行注释
- /* */ 多行注释
Go程序的一般结构: basic_structure.go
- Go程序是通过package来组织的(与python类似)
- 只有package名称为main的包可以包含main函数
- 一个可执行程序有且仅有一个main包
- 通过import关键字来进行常量的定义
- 通过在函数体外部使用var关键字来进行全局变量的声明与赋值
- 通过type关键字来进行结构(struct)或接口(interface)的声明
- 通过func关键字来进行函数的声明
// 当前程序的包名
package main
//导入其它的包
import "fmt"
// 常量的定义
const PI = 3.14
// 全局变量的声明与赋值
var name = "gopher"
// 一般类型声明
type newType int
// 结构的声明
type gopher struct{}
// 接口的声明
type golang interface{}
// 由 main函数作为程序入口点启动
func main() {
Println("Hello world! 你好,世界!")
}