0%

Go傻瓜教程2-语句的结构和语法

入门示例

Go的官网支持直接在线编写代码,即时运行查看结果。入门的标准起手式示例代码:

1
2
3
4
5
6
7
package main  // 声明 main 包,表明当前是一个可执行程序

import "fmt" // 导入内置 fmt 包

func main(){ // main函数,是程序执行的入口
fmt.Println("Hello World!") // 在终端打印 Hello World!
}

引用一下官方的定义:

每个 Go 程序都是由包组成的。

程序运行的入口是包 main

这里有两个地方需要注意:

  • 每一个Go文件的非注释的第一行,必须声明main包。
  • 所有的逻辑操作代码都必须放在main函数里执行,不可以在main函数之外执行。

语句声明的规范

main 函数外只可以定义变量(可以同时赋值)和声明函数

关于第二点,意思是说你仅仅可以在 main 函数外定义变量或者声明函数,而不可以进行其他操作。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import (
"fmt"
"math/rand"
)

// s 变量blablaba
var s string = "123ABC"

// PI 常量blablaba
const PI = 3.14

// test blablaba
func test() {
fmt.Println("我是test函数")
}

func main() {
test() // 执行test函数
fmt.Println("My favorite number is", rand.Intn(10))
}

上面这样是正常的。但是如果像下面这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import (
"fmt"
"math/rand"
)

// s 变量blablaba
var s string = "123ABC"
s="ert" //变量赋值
// PI 常量blablaba
const PI = 3.14

// test blablaba
func test() {
fmt.Println("我是test函数")
}

func main() {
test() // 执行test函数
fmt.Println("My favorite number is", rand.Intn(10))
}

编译器会毫不留情的给你报错:

syntax error: non-declaration statement outside function body

函数的花括号不可以另起一行

1
2
3
4
5
func main()
{
test() // 执行test函数
fmt.Println("My favorite number is", rand.Intn(10))
}

编译器会毫不留情的给你报错:

missing function body
syntax error: unexpected semicolon or newline before {


总结

  • 第一行要声明main包
  • main函数外不能单独进行赋值,执行函数等操作。
  • 函数定义的花括号不能另起一行