go语言入门
计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。
除了OOP外,近年出现了一些小众的编程哲学,Go语言对这些思想亦有所吸收。例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。
Go 语言最主要的特性:
- 自动垃圾回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
Go(又称Golang),是一款静态强类型的编译型语言。风格像C语言。语法级别支持并发任务。是Google的开源项目。
那么好奇的你肯定会问,既然像C,为什么还要再造轮子开发新的编程语言呢?
Go最直观的差别是,它是一款“天然严格”的程序语言,对程序员用户有着近乎洁癖的要求(比如用首字母大小写控制是否可见,比如不允许出现没用过的变量名,比如编译时完全没机会见到warning只有必须修好的errors),而这样的要求,的确可以很大程度避免潜在问题,直接“大力出奇迹”提升写出来的程序的健壮性。
跟Python类似的,Go也准备了功能强大的标准库,而与解释型语言Python截然不同的是,作为一款编译型语言,跟C一样当然需要编译运行,不过得益于自身的神优化(可能是自举编译器优化,也可能是根据多种平台指令集编译优化),编译速度飞快。目前Go的标准库可能还不及Python的一半,但提供的标准库每一个都设计得很精湛,很恰到好处,正如语言它本身提供给我们的特性,也是不多不少,恰到好处。
相比给足十分灵活性的Python,Go永远都是优先考虑“简洁”和“健壮” ,而宁可损失一部分的灵活性(比如呼声非常高的提案至少10年的终于要在今年发布1.18版本加入的泛型)。毕竟,复杂度越高,自由度越高,不可控的因素会更多。
Go 语言特色
- 简洁、快速、安全
- 并行、有趣、开源
- 内存管理、数组安全、编译迅速
Go 语言用途
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
第一个 Go 程序
接下来我们来编写第一个 Go 程序 hello.go(Go 语言源文件的扩展是 .go),代码如下:
`package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}`
要执行 Go 语言代码可以使用 “go run” 命令。 执行以上代码输出:
$ go run hello.go
Hello, World!
此外我们还可以使用 go build 命令来生成二进制文件:
$ go build hello.go
$ ls
hello hello.go
$ ./hello
Hello, World!