自动格式调整
gofmt (-w) hello.go
-w:调整完格式后写入原文件
包
程序从main包开始运行
导入路径 "fmt"
和 "math/rand"
来使用这两个包
导包格式
import ( "fmt" "math/rand" )
导出名首字母大写
一个名字以大写字母开头,那么它就是已导出
eg: math.Pi
Pi就是一个已导出名,导出自math包
函数
类型在变量名之后
func add(x int, y int) int{
当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略。
eg: x int, y int --> x,y int
func add(x, y int) int {
return x + y
}
可以有多个返回值
命名返回值
Go 的返回值可被命名,它们会被视作定义在函数顶部的变量。
返回值的名称应当具有一定的意义,它可以作为文档使用。
没有参数的 return
语句返回已命名的返回值。也就是 直接
返回。
直接返回语句应当仅用在下面这样的短函数中。在长的函数中它们会影响代码的可读性。
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))
}
#此处我的理解是
这是普通的
进行返回值命名
变量声明
类型在最后
var c, python, java bool
var i int = 1
在函数中,简洁赋值语句 :=
可在类型明确的地方代替 var
声明
func main() { var i, j int = 1, 2 k := 3
注意!函数外不可使用 :=
没有明确初始值的变量声明会被赋予它们的 零值。
零值是:
- 数值类型为
0
, - 布尔类型为
false
, - 字符串为
""
(空字符串)。
类型转换
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
注意显式转换
更简洁的
i := 42
f := float64(i)
u := uint(f)
类型推导
在声明一个变量而不指定其类型时(即使用不带类型的 :=
语法或 var =
表达式语法),变量的类型由右值推导得出
var i int
j := i // j 也是一个 int
不过当右边包含未指明类型的数值常量时,新变量的类型就可能是 int
, float64
或 complex128
了,这取决于常量的精度:
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
常量 const声明 ,不能使用 := 赋值