第一个 Go 程序

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

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Hello, World!")
  5. }

要执行 Go 语言代码可以使用 go run <文件地址>命令。执行以上代码输出:
image.png
此外我们还可以使用go build <文件地址>命令来生成二进制文件:

  1. $ go build hello.go
  2. $ ls
  3. hello hello.go
  4. $ ./hello
  5. Hello, World!

Go 语言结构

Go 语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释 ```go package main

import “fmt”

func main() { / 这是我的第一个简单的程序 / // var name string = “Hello, World!” name := “Hello, World!” fmt.Println(name) }

  1. 1. package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package mainpackage main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
  2. 1. import &quot;fmt&quot; 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
  3. 1. func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
  4. 1. /*...*/ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
  5. 1. fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n
  6. - 使用 fmt.Print("hello, world\n") 可以得到相同的结果
  7. - Print Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台
  8. 6. 标识符 包括常量、变量、类型、函数名、结构字段等等
  9. - 当以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public
  10. - 标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected
  11. <a name="a0cmj"></a>
  12. ### Go 标记
  13. Go 程序可以由多个标记组成,可以是关键字 标识符 常量 字符串 符号。如以下 GO 语句由 6 个标记组成:
  14. ```go
  15. fmt.Println("Hello, World!")
  16. // 6个标记分别是:
  17. fmt
  18. .
  19. Println
  20. (
  21. "Hello, World!"
  22. )

Go语言的语言符号

Go语言的语言符号又称记法元素,共包括5类,

  • 关键字(keyword)
  • 标签符(identifier)
  • 操作符(operator)
  • 分隔符(delimiter)
  • 字面量(literal)

它们是组成Go语言代码和程序的最基本单位。
Go语言的所有源代码都必须由 Unicode 编码规范的UTF-8 编码格式进行编码

行分隔符

我把行分隔符分为了三种

  • 严格分隔符 — 必须以执行以分号;, 结尾的规则:例如 Java Dart C家族
  • 灵活分隔符 — 例如JavaScript Go, 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C家族中的其它语言一样以分号;结尾,因为这些工作都将由 Go 编译器自动完成 ```go //Go语言中 fmt.Println(“Hello, World!”) fmt.Println(“我正在学习 Go语言”)

//JavaScript语言中 console.log(“Hello, World!”) console.log(“我正在学习 JavaScript语言”)

  1. - **换行分隔符** 例如python
  2. ```python
  3. if __name__ == "__main__":
  4. print("Hello, World!")
  5. print("我正在学习 python语言")

编程语言的标识符

语言种类 标识符命名规则 例如
Go语言 标识符用来命名变量、类型等程序实体 以下是有效的标识符:
mahesh kumar abc move_name a_123
myname50 _temp j a23b9 retVal

以下是无效的标识符:
1ab(以数字开头)
case(Go 语言的关键字)
a+b(运算符是不允许的)
一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列
第一个字符必须是字母或下划线而不能是数字
C语言 标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。 正确的标识符:abc,a1,prog_to
不能把C语言关键字作为用户标识符 if,for,while等
标识符长度是由机器上的编译系统决定的,一般的限制为8字符(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)
标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写 长度(length),求和、总计(sum)
圆周率(pi)……
标识符命名应做到见名知意
C语言中把标识符分为三类:关键字预定义标识符,用户自定义标识符
C++ 标识符由字母、数字、下划线“_”组成
不能把C++关键字作为标识符
标识符长度限制32字符
标识符对大小写敏感
字符只能是字母或下划线,不能是数字
JAVA 标识符由字母、数字、下划线“_”、汉字、美元符号“$”组成,第一个字符不能是数字
不能把java关键字保留字作为标识符
标识符没有长度限制
标识符对大小写敏感
python 标识符有字母、数字、下划线组成 以单下划线开头(foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;

以双下划线开头的(foo)代表类的私有成员;以双下划线开头和结尾的(foo)代表python里特殊方法专用的标识,如init_
()代表类的构造函数
所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。python中的标识符是区分大小写的
以下划线开头的标识符是有特殊意义的
汇编语言 标识符由字母、数字、下划线组成 下面的标识符名是合法的:
year,Day,ATOK,X,_ CWS,HAO

而下面的标识符名是不合法的:
#123,.COM,$100,1996Y,1_2_3,Win3.2,LOOP,AX
标识符的命名规则是:由字母(大、小写皆可)、数字及下划线组成,且第一个字符必须是字母或者下划线,不能用具有意义的指令符号或者寄存器
在汇编语言中,一般用大写字母

字符串连接

Go 语言的字符串可以通过 + 实现:

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Google" + "Runoob")
  5. }
  6. //以上实例输出结果为:GoogleRunoob

Go 语言的空格

Go 语言中变量的声明必须使用空格隔开,如:

  1. var age int;

语句中适当使用空格能让程序更易阅读。

  1. //无空格:
  2. fruit=apples+oranges;
  3. //在变量与运算符间加入空格,程序看起来更加美观,如:
  4. fruit,apples,oranges := 0,1,2
  5. fruit = apples + oranges

注释

注释不会被编译,每一个包应该有相关注释。单行注释是最常见的注释形式

  • 单行注释,以 //开头,可以在任何地方使用
  • 多行注释也叫块注释,均以/ 内容代码部分 /包裹起来。如: ```go // 单行注释

/ Author by 菜鸟教程 我是多行注释 / ```

关键字

下面列举了 Go 代码中会使用到的 25 个关键字或保留字:

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr
  • 程序一般由 关键字 常量 变量 运算符 类型 和 函数 组成
  • 程序中可能会使用到这些分隔符:括号 () 中括号 [] 大括号 {}
  • 程序中可能会使用到这些标点符号:. , ; : …