1. 包的导入
使用 import 语句导入一个包,如果导入的包没有被使用,则会编译失败。
import "fmt" // 导入标准 fmt 包
import "math" // 导入标准 math 包
import "mypackage" // 导入自定义包
新建main.go文件,输出hello world。
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
2. 变量的定义
变量声明可以使用 var 关键字或短变量声明 :=,Go 会自动推导类型。变量所在的作用域只能定义一次。
var a int = 10
var b, c string = "hello", "world"
d := 20 // 等同于 var d = 20
在 Go 语言中,变量定义有以下几点需要注意:
- 变量定义后必须使用,否则会编译报错。
- 变量可以一次定义多个,例如
var a, b, c int - 变量定义时可以不指定类型,Go 会根据值类型自动推导变量类型。例如
a := 1 - 变量名以字母或下划线开头,可以包含字母、数字、下划线,但不允许出现空格。
- 变量名不区分大小写,但习惯上使用首字母大写区分可导出的变量和不导出的变量。
- 变量声明时如果声明了初始值,则可以省略类型,例如
var a = 1 - 变量声明时如果没有声明初始值,则该变量会被默认赋值为零值。数值类型为 0,字符串类型为 "",布尔类型为 false。
- 在函数中,可以使用短变量声明
:=声明并赋值变量。短变量声明的变量必须声明在函数内部,并且至少有一个变量被新声明,否则会编译报错。
3. 控制流程语句
Go 语言提供了基本的控制流语句,包括 if,for,switch。
// if 语句
if i < 0 {
return -i
} else {
return i
}
// for 语句
for i := 0; i < 10; i++ {
sum += i
}
// switch 语句
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("OS X.")
case "linux":
fmt.Println("Linux.")
default:
fmt.Printfs.", os)
}
4. 数据类型及其定义
Go 语言的基本数据类型包括布尔型(bool),数值型(int,float64 等),字符串型(string),以及复合型(array,slice,map,struct,interface 等)。
var b bool = true
var i int = 1
var f float64 = 3.14
var s string = "Hello"
var a = [4]int{1, 2, 3, 4}
var slice = []int{1, 2, 3, 4}
var mappings = map[string]int{"one": 1, "two": 2}
type Person struct {
name string
age int
}
5. 函数的定义
函数由关键字 func 定义,函数可以返回多个值,并且有命名返回值。
func add(x int, y int) int {
return x + y
}
func swap(x, y string) (string, string) {
return y, x
}
6. 指针的定义
Go 语言支持指针类型,可以通过 & 取地址,通过 * 访问指针指向的值。
var x int = 1
var p *int = &x // p 指向 x 的地址
fmt.Println(*p) // 输出 1,*p 为 x 的值