0%

Go傻瓜教程3-包、变量、常量、函数

官方解析:

每个 Go 程序都是由包组成的。
程序运行的入口是包 main

关于包,Go有一种便捷的写法:

1
2
3
4
5
6
7
import "fmt"
import "math"
// 圆括号组合的写法
import (
"fmt"
"math"
)

Go官方也推荐圆括号的方式。
关于包,还有一个注意的地方,就是首字母大写的变量才会被导出
意思就是说,你定义首字母为大写的变量,其他包引入的时候才可以看到,同样你引入其他包的时候,也只能看到首字母大写的变量。例如:

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
"math"
)

func main() {
fmt.Println(math.Pi) \\ 小写pi会报错,没有这个变量
}

函数

Go中的函数比较有意思,可以返回多个值。

1
2
3
4
5
6
7
8
9
10
11
12
package main

import "fmt"

func swap(x, y string) (string, string) {
return y, x
}

func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}

从这个例子可以看出Go函数有几个特点:

  1. 参数类型写在参数之后
  2. 多个参数如果类型一样,则只需要在最后一个参数表明类型,其他省略
  3. 函数可以返回任意个数的值

Go可以命名返回值,这样命名的返回值在函数内部也可以直接使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import "fmt"

func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}

func main() {
fmt.Println(split(17))
}

这时候可以直接返回空return,Go会正常返回x,y的值。

变量

Go变量用var关键字,和js一样。不过同样遵循变量类型写在变量后面,但Go对变量定义和赋值有更加优雅的方式:

1
2
var i, j int = 1, 2
var c, python, java = true, false, "no!"

如果在函数内部,Go支持:= 这样的简洁赋值语句:

1
2
3
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"

同样Go的变量也是支持圆括号写法:

1
2
3
4
var (
a = 1
b = "abc"
)

常量

常量的定义与变量类似,只不过使用 const 关键字。另外常量不能使用:= 语法定义。

1
2
3
4
const Pi = 3.14
func main() {
const World = "世界"
}

总结

  • main包为Go程序入口包
  • 每个包只有大写字母开头的变量才可以导出给其他包引入
  • 定义变量或者函数参数,类型写在后面
  • 函数可以返回多个值,命名的返回值可以直接在函数内部使用