Go语言出现原因:
随着系统复杂度越来越高,维护的成本越来越高,目前的编程语言有着风格不统一、计算能力不够、处理大并发不够好的特点,因此缺乏一个足够简洁高效
的编程语言。
-
比如Go语言为了风格统一,有着许多的要求,比如一个包中的变量、方法如果是希望被外部使用的,则要求必须首字母大写;还比如for循环{}的{必须和判断条件一行
for i := 0;i < 10;i++{//必须要求一行 }
同样的,计算机的硬件技术更新频繁,性能提升很快,主流的编程语言发展明显落后于硬件,不能够合理的利用多核多CPU的优势来提升软件性能。
Go语言特点:
- Go语言是静态类型语言,有着静态编译语言的安全和性能,但同时,又达到了动态语言开发维护的高效率。
- 引入了包的概念,用于组织程序结构,
Go语言的一个文件都要归属于一个包
,不能单独存在。 - 垃圾回收机制,内存自动回收(防止了C、C++中的内存泄露)
- 天然并发!
- 语言层面支持
- goroutine轻量级前程,可实现大并发处理,高效利用多核
- 基于CSP并发模型实现
- 吸收了管道通信机制,形成Go语言特有的管道channel,通过channel可实现不同的goroute
- 函数可以返回多个值
- 其他创新:切片slice(动态数组)、defer延时函数(方便及时回收资源)
开发项目时Go程序目录结构:
Go语言环境配置:见Go语言环境配置
当前目录:F:\Go
- src
- gocode
- project_01
项目1
- main
一个文件夹对应一个包
- hello.go
Go文件
- hello.go
- other_package
其他的包[是个文件夹]
- main
- project_02
项目1
- main
- other_package
- project_01
- gocode
如图所示:
编写hello.go文件如下:
package main
import "fmt"
func main() {
fmt.Println("hello")
}
对.go文件进行编译和执行
编译:go build xxx.go
也可以直接go run xxx.go,可是在实际工程中,肯定要先编译,再执行。
go build -o /bin/main.exe main.go
Golang执行流程分析:
- .go文件 —go build编译–> 可执行文件 —运行–> 结果
- .go文件 —go run—> 结果
再编译时,编译器会将程序依赖的库文件包含在可执行文件中,所有会导致可执行文件变大了。
两种方式的区别:
- 如果先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行。
- 如果我们直接
go run
源代码,那么如果要在另外一台机器上这样运行,那么也需要go开发环境,否则无法执行。
其他注意事项:
- 源文件以.go为扩展名
- Go程序执行入口为main()函数
- 区分严格大小写
- 一行最长不超过80个字符,超过的请使用换行展示。
- Go设计者思想:一个问题尽量只有一个解决方法