Go 或 Golang 是 Google 为内部软件开发开发的一种语言,旨在使他们的软件更易于编写、维护和构建.Go 在开发领域迅速流行起来,常用于编写 API 和 DevOps 工具.Go 介于低级语言和高级语言之间,兼具两者的优点.

特点:

  • 使用与许多其他语言(包括“C”)类似的语法
  • 速度快内存占用少
  • 跨多个平台运行
  • 为多线程程序提供简单的语法
  • 提供一些面向对象的功能
  • 有垃圾收集功能

编译文件

现在我们知道了 Go 的用途,让我们学习如何使用 Go 编译器将文件编译为可执行文件, 在终端中,输入 go build 然后输入文件名,最后按 Enter .如果我们要运行一个名为 greet.go 的文件

package main

import "fmt"

func main() {
	fmt.Println("Hello World")
}

命令如下

go build greet.go

运行文件

虽然运行命令后没有显示任何内容,但 Go 已经创建了程序的可执行文件.如果我们输入命令 ls ,我们将看到原始的 Go 程序及其可执行文件 greet, 要执行该文件,我们调用: ./greet, 结果是打印了 Hello World. 我们可以根据需要多次运行该可执行文件

值得庆幸的是,我们有 go run 命令,后面跟着 Go 文件名.我们可以像这样使用 go run 命令

go run greet.go

go run 命令会编译代码(类似 go build )并执行.与 go build 不同, go run 不会在当前文件夹中创建可执行文件

现在我们了解了如何编译和运行 Go 程序,让我们来看看 Go 包, 项目可以包含许多 .go 文件,这些文件被组织成包.每个包就像一个目录:与程序某个部分相关的 .go 文件可以放在一个包中,而与程序其他部分相关的 .go 文件可以放在另一个包中.如果我们正在编写一个计算器程序,我们可以将用于计算的文件放在 calc 包中,将用于输入和输出的文件放在 io 包中我们前面见到的第一个程序中 package main 这一行称为包声明 ,它告诉 Go 编译器这个 .go 文件属于哪个包.如果这个包声明是 package main ,那么这个程序将被编译成可执行文件, 接下来是空行.Go 通常会忽略这些空行,它们被视为空白 (换行符、空格和制表符).虽然我们的程序不需要换行符,但它使我们的代码更易于阅读, 然后我们有一个 import 语句 , import “fmt” .import 关键字允许我们使用来自其他包的代码,在本例中是来自 fmt 包的 Println 函数.注意包名是如何用双引号 " 括起来的.

函数

现在我们知道了如何声明和使用 Go 包,让我们讨论一下函数. 之前的函数叫 main 函数, 我们使用 func 关键字来声明 Go 函数 main

  • func 关键字表示函数声明的开始
  • func 后面跟着函数的名称: main
  • 名称后面跟着一对括号 () 和一对花括号 {}
  • 函数代码写在花括号内

函数内部的代码是缩进的.此处的代码调用 fmt 包(我们之前导入的)中的 Println 函数来打印消息 Hello World, 通常,我们编写函数时,需要编写代码来调用它们,否则它们就没用了.但是,如果 main 函数位于 main 包中,情况就不同了. 当 main 包中有一个 main 函数时,这对于 Go 来说是特殊的.编译时会生成一个可执行文件,运行时,该可执行文件以 main 函数为起点

导入多个包

之前,我们只导入了一个包 fmt .这个包很有用,但它只是 Go 众多包中的一个, 标准包非常有用,你经常会在每个 .go 文件中使用多个包, 要导入多个包,我们可以添加多个 import 语句

import "package1"
import "package2"

或者使用带括号的单个 import:

import (
  "package1"
  "package2"
)

包别名

我们还可以通过在包名前指定别名来为包提供别名

import (
  p1 "package1"
  "package2"
)

在上面的例子中,我们将 package1 别名为 p1 ,现在我们可以通过别名 p1 调用 package1 中的 SampleFunc 函数 p1.SampleFunc() 而不是 package1.SampleFunc()

注释

现在我们已经完成了使用包的基础知识,让我们继续讨论注释, 注释可用于:

  • 解释代码的作用以及为什么以某种方式执行某些操作
  • 概述需要额外小心的重要或脆弱的代码块
  • 记下我们在编写代码时需要做的事情
  • 禁用代码但不删除它
  • 添加 go doc 工具可获取的信息(稍后会详细介绍)

Go 中有两种类型的注释.分别是单行注释和多行注释, 单行注释以 // 开头,该行的其余部分将被编译器忽略.

// This entire line is ignored by the compiler
// fmt.Println("Does NOT print")
fmt.Println("This gets printed!") // This part gets ignored

多行注释它们以 /* 开头,以 */ 结尾,包含其中的所有内容

/*
This is ignored.
This is also ignored.
fmt.Println("This WON'T print!")
*/

文档工具

Go 包含一个程序 go doc 用于从 .go 文件中提取和查看文档.要获取某个包的信息,请使用命令 go doc 加上包名称或函数名称

go doc fmt.Println