一、Go语言前言
Go是一种静态类型的编译语言,常常被称作是21世纪的C语言。Go语言是一个开源项目,可以免费获取编译器、库、配套工具的源代码,也是高性能服务器和应用程序的热门选择。
Go语言可以运行在类UNIX系统——比如Linux、OpenBSD、Microsoft Windows等操作系统上。
因为Go语言的特性,现很多互联网大厂公司都在使用,如字节跳动、Google、百度、美团等等。
二、Go语言特性
Go语言最主要的特性:
- 自动垃圾回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
Go语言附带了其相关的工具和标准库,拥有自动垃圾回收、一个包系统、系统调用接口等,其本身没有太多的特性,例如没有构造函数和析构函数、没有运算符重载、没有继承、没有泛型等等。但是Go语言本身是保证向后兼容的。
Go语言有足够的类型系统以避免动态语言中那些粗心的类型错误,比传统的强类型转换简洁很多。不需要程序员纠结具体类型的安全属性,在实践中提供了更多安全性和更好的运行时性能。
Go语言的标准库,提供了清晰的构建模块和公共接口,包含I/O操作、文本处理、图像、网络和分布式应用程序等,并支持许多标准化的文件格式和编解码协议。库和工具使用大量约定简化了程序逻辑,学习起来也很容易上手。不管之前你使用的是C、C++、Java、Python或者其他语言,都问题不大,因为Go语言的变量、表达式、函数等基本语法都是相似的,下来就和我一起走进Golang。
三、Go Hello World实例
Go语言的基础组成有以下几个部分:
- 包声明
- 引入包
- 函数
- 变量
- 语句&表达式
- 注释
下来让我们看一下简单的代码,输出Hello World!
package main
import "fmt"
func main() {
/* 输出Hello World! */
fmt.Println("Hello, World!")
}
现在就让我来为大家解析一下上述代码:
- 第一行代码 package main 定义了包名。 Go语言的代码通过包 (package) 组织,包类似于其它语言里的库(libraries)或者模块 (modules) 。一个包由位于单个目录下的一个或多个.go源代码文件组成,目录定义包的作用。每个源文件都以一条 package 声明语句开始,表示该文件属于哪个包。
main包比较特殊,表示一个可独立执行的程序,而不是库,每个 Go 应用程序都包含一个名为 main 的包。在 main 里的 main函数也很特殊,它是整个程序执行时的入口。 main 函数所做的事情就是程序做的。当然了, main 函数一般调用其它包里的函数完成很多工作,比如 fmt.PrintIn 。
-
下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
-
下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
-
下一行 /.../ 是注释,在程序执行时将被忽略。
-
下一行 ftm.printIn 是一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。(使用 fmt.Print("hello, world\n") 可以得到相同的结果)
-
当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected)。
执行Go程序
编写完Go代码如何去执行呢?
- Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令。 GO语言提供的工具都通过一个单独的命令 g 调用 , go 命令有一系列子命令。最简单的一个子命令就是run。这个命令编译一个或多个以.go结尾的源文件,链接库文件,并运行最终生成的可执行文件。
- 我们还可以使用 go build 编译程序,保存编译结果以备将来随时可以用:
这个命令生成一个名为hello的可执行的二进制文件,之后你可以随时运行它,不需任何处理。