Go 语言教程
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
Go 语言特色
简洁、快速、安全
并行、有趣、开源
内存管理、数组安全、编译迅速
Go 语言用途
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
Go 语言用途开发工具
GoLand
LiteIDE
Sublime
Vim
Eclipse
IntelliJ IDEA
等选择
第一个 Go 程序
第一个 Go 程序 hello.go(Go 语言源文件的扩展是 .go)
Go 语言代码用 go run 命令
输出
$ go run hello.go Hello, World!
还可用 go build 命令来生成二进制文件:
$ go build hello.go $ lshello hello.go$ ./hello Hello, World!
千年的回眸
Golang 在 Mac Linux Windows 下交叉编译 非常好用
Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Windows 下编译 Mac 和 Linux 64位可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)交叉编译不支持 CGO 所以要禁用它
上面的命令编译 64 位可执行程序
go build -ldflags "-s -w" -o linuxBbsGo main.go 程序减肥方法
千年的回眸
参考地址
千年的回眸
gormgen 代码生成工具生成的API查询和更新gorm结构无需处理 interface {}或数据库列名称
1.安装
git clone github.com/olongfen/gormgen
cd cmd/gormgen/
go build -o gormgen main.go
mv gormgen /usr/local/bin/
2.使用 在结构体模型加对应的注解,//go:generate
// 用户Demo表
//go:generate gormgen -structs User -output user_gen.go
type User struct {
Id int32 // 主键
UserName string // 用户名
Mobile string // 手机号
IsDeleted int32 // 是否删除 1:是 -1:否
CreatedAt time.Time `gorm:"time"` // 创建时间
UpdatedAt time.Time `gorm:"time"` // 更新时间
}
3.执行生成命令 go generate ./...
千年的回眸
参考地址
大王叫我来巡山1998
压缩Go 可执行文件大小
查看 go 连接的参数
$ go tool link -h
可以看到
usage: link [options] main.o
-s disable symbol table # 去掉符号表
-w disable DWARF generation # 去掉调试信息
这二选项可以减少程序文件体积
同一个 hello.go 文件
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
二个不同的编译 生成的文件大小相差很大
$ go build -o hello helloworld.go
$ go build -ldflags "-s -w" -o small helloworld.go
2011-06-15 07:10 1,081,344 hello
2011-06-15 07:10 768,000 small
另外还可以使用 upx 压缩 go 二进制文件
大王叫我来巡山1998
参考地址
文人墨客
计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。
除了OOP外,近年出现了一些小众的编程哲学,Go语言对这些思想亦有所吸收。例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。
Go 语言最主要的特性:
文人墨客
参考地址