1. // 单行注释
  2. package main
  3. import "fmt"
  4. func main() {
  5. //逻辑实现
  6. fmt.Println("Hello, Yuan!")
  7. }

1、程序语法解析

1.1、main包和main函数

  • Go语言以“包”作为管理单位,每个 Go 源文件必须先声明它所属的包,所以我们会看到每个 Go 源文件的开头都是一个 package 声明。
  • Go语言的包与文件夹是一一对应的。一个Go语言程序必须有且仅有一个 main 包。main 包是Go语言程序的入口包,如果一个程序没有 main 包,那么编译时将会出错,无法生成可执行文件。

    1.2、import

    在包声明之后,是 import 语句,用于导入程序中所依赖的包,导入的包名使用双引号””包围,格式如下:
    1. import "name"
    其中 import 是导入包的关键字,name 为所导入包的名字。

    注意: 导入的包中不能含有代码中没有使用到的包,否则Go编译器会报编译错误。

也可以使用一个 import 关键字导入多个包,此时需要用括号( )将包的名字包围起来,并且每个包名占用一行

  1. // 导入1到多个包
  2. import "p1"
  3. import "p2"
  4. // 导入 1 到多个 包
  5. import(
  6. "p1"
  7. "p2"
  8. )

2、程序编译执行

我们上面给大家介绍过,Go语言是像C语言一样的编译型的静态语言,所以在运行Go语言程序之前,先要将其编译成二进制的可执行文件。
可以通过Go语言提供的go build或者go run命令对Go语言程序进行编译:

go build命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件;

  1. 1. 如果是普通包,当你执行go build之后,它不会产生任何文件。【非main包】
  2. 2. 如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件exe
  3. 3. 你也可以指定编译输出的文件名。我们可以指定go build -o xxxx.exe,默认情况是你的package名(main包),或者是第一个源文件的文件名(main包)

Eg:

  1. # 编译 hello.go 文件
  2. D:\GoWork\src>go build hello.go
  3. # 生成1个 hello.exe 可执行文件
  4. D:\GoWork\src>dir
  5. ...hello.exe
  6. ...hello.go
  7. # 执行这个hello.exe文件
  8. D:\GoWork\src>hello.exe
  9. hello world

除了使用go build命令外,Go语言还为我们提供了go run命令,go run命令将编译和执行指令合二为一,会在编译之后立即执行Go语言程序,但是不会生成可执行文件。

  1. go run fileName // fileName 参数必须是同一 main 包下的所有源文件名,并且不能为空。

Eg:

  1. # go语言把它当做了解释性语言执行,
  2. D:\GoWork\src>go run hello.go # 等同于 编译 + 可执行性文件这么一个操作
  3. hello world

3、总结

  1. 1. go语言是依赖包结构进行管理的,包可以想象成一个文件夹,也就是说go语言的一个程序必须在一个文件夹下,所以在这个文件夹下必须要有一个主程序。
  2. 2. 这个主程序首先要有关键字 package,以后无论项目有多大,项目有多全,至少要有一个main