Go语言入门 | 青训营

67 阅读5分钟

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

Go 语言特色

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速

第一个 Go 程序

接下来我们来编写第一个 Go 程序 hello.go(Go 语言源文件的扩展是 .go),代码如下:

hello.go 文件

package main

import "fmt"

func main() {
/* 这是我的第一个简单的程序 */
fmt.Println("Hello, World!")
}

执行go run 命令后可输出"Hello, World!",下面就让我们来理解一下这段代码。

  1. package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
  2.  import "fmt"  告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
  3.  func main()  是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
  4.   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语言给我最大的感悟。今天就先学习到这里吧!