Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go 语言特色
- 简洁、快速、安全
- 并行、有趣、开源
- 内存管理、数组安全、编译迅速
第一个 Go 程序
接下来我们来编写第一个 Go 程序 hello.go(Go 语言源文件的扩展是 .go),代码如下:
hello.go 文件
package main
import "fmt"
func main() {
/* 这是我的第一个简单的程序 */
fmt.Println("Hello, World!")
}
执行go run 命令后可输出"Hello, World!",下面就让我们来理解一下这段代码。
- package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
- import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
- func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
- fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。
使用 fmt.Print("hello, world\n") 可以得到相同的结果。
注意
需要注意的是 { 不能单独放在一行,在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。Go的标识符实际上是一个或多个字母(A到Z和a到z)数字(0~9)、下划线组成,第一个字母必须是字母或下划线而不能是数字。
字符串连接
Go 语言的字符串连接可以通过 + 实现:
实例
package main
import "fmt"
func main() {
fmt.Println("Google" + "Runoob")
}
以上实例输出结果为:GoogleRunoob
变量声明在Go语言中,变量需要声明后才能使用,同时变量声明后必须使用。基本语法是:
go var 变量名 类型
例如:
go
var name string
var age int
Go语言推荐使用驼峰式命名法,首字母小写。
流程控制Go语言提供了基础的流程控制功能:- if条件语句
- for循环语句
- switch多条件语句if条件语句的基本语法:
go
if 条件 {
// 条件满足时执行
} else {
// 条件不满足时执行
}
for循环语句可用于遍历数组、切片、map等,基本语法:
go
for init; condition; post { }
switch多条件语句语法:
go
switch var {
case val1:
...
case val2:
...
default:
...
}
函数定义在Go语言中通过func关键字定义函数,基本语法格式:
go
func functionName(input1 type1, input2 type2) (output1 type1, output2 type2) {
//函数体
}
定义完函数后,可以在程序中调用该函数。
并发编程Go语言内置的goroutine可以轻松实现并发编程。例如:
go
go func() {
//并发执行的函数体
}()
通过channel可以实现goroutine之间的通信。
异常处理Go语言采用返回error的方式处理错误,通过检测返回的error是否为空,来确定是否发生错误。
go
if err != nil {
//发生错误时的处理
}
错误作为值返回,这样方便错误处理。## 包管理Go语言提供了govendor等包管理工具,可以轻松引入外部包。
govendor init
govendor add +external
引入的包通过import使用。
测试Go语言内置testing框架提供测试功能,可以通过编写测试函数并执行go test命令来测试代码。
go
func TestExample(t *testing.T) {
//测试函数体
}
感觉编程语言之间还是有相通之处的,刚接触Go语言时,最先感受到的是它的简洁。Go语言的语法非常简单优雅,没有太多冗余和复杂的特征。这让我可以把更多注意力放在程序逻辑上,而不是语法结构上。另一点让我感到惊喜的是Go语言内置的并发支持。而Go语言的goroutine和channel概念简化了这一过程,可以很容易地编写出并发程序。这在处理一些高并发场景时,显著地提高了执行效率。使用Go语言一段时间后,我发现自己的代码质量提高了很多。因为Go语言的语法简洁统一,很容易形成一致的代码风格。所有Go语言代码都保持着高可读性。这在团队协作时缺省和维护代码时显得尤其重要。这是其他语言比不上的。Go语言还有丰富的高质量标准库,这些库函数使用简单,文档说明清楚。 gdata样写出安全、可靠的程序,不需要自己重新发明轮子。这极大地提高了研发的效率。当然,没有一门语言是完美的。Go语言对我来说也有一些不太习惯的地方,比如接口实现不是很直观,错误处理方式也需要适应。但总体上来说,Go语言为软件工程师解决了很多真实需要面对的问题。我非常喜欢用Go语言编程,它让我对编程充满热情,并且我可以感受到自己正在成长。这就是Go语言给我最大的感悟。今天就先学习到这里吧!