Hello Go语言
《Go语言学习系列》将持续更新(包括Go、后端面试知识分享),可以搜索wx公众号:青年泛
Go语言于2009年11月发布,其发明人是Robert Griesemer、Rob Pike和Ken Thompson。Go官网
Go特别适用与构建基础设施类软件(如网络服务器),以及程序员使用的工具和系统等。
Go是个开源项目,所以其编译器、库和工具的源代码都可以免费获取。Github地址
1.起源
Go有的会称它为“类C语言”或“21世纪的C”。Go继承了C的表达式语法、流程控制语句、基本数据类型、值传递和指针。更重要的是继承了C的要点:程序要编译成高效的机器码,并与所处的操作系统提供的机制相配合。
Go的协程与通道受到了通信顺序进程(Communicating Sequential Process,CSP)的启发,在CSP中:程序就是一组无共享状态进程的并行组合,进程间的通信和同步采用通道完成。
Go还受到以Pascal为发端的语言支流的影响,Modula-2启发了包的概念。Oberon-2影响了包、导入和声明的语法,且提供了方法声明的语法。
2.Go项目与生态
Go的生态环境目前虽比不上Java,但是它在蓬勃发展。Go在Github的项目集
Go语言风格比较简结,Go出现的晚,吸取其他语言的精华,有点像是个集大成者。
Go有:
- 垃圾回收(可以比较Java的GC)
- 包概念
- 函数是一等公民(在Java中类是一等公民),可以往函数式编程风格编写
- 默认UTF-8的不可变字符串
- 词法作用域
- 系统调用接口
- 协程
Go无:
- 隐式数值类型转换(需要显示转换)
- 构造或析构函数(Go内置函数New、make)
- 运算符重载(在Java中只有“+”运算符是可重载的)
- 形参默认值
- 继承、泛型、宏
- 异常
- 函数注解
- 线程局部存储
3.Hello World程序
package main
import "fmt" //导入内置fmt包
func main() {
fmt.Println("Hello World!")
}
Go语句末尾可以不用写分号
4.关注公众号一起哔哔
持续交流后端技术,wx公众号:青年泛