一、声明包
package xxx
注意:声明为main的包将会作为程序入口,按照约定,声明的包名与你在别的文件中导入这个包的包名的最后一个元素相同
二、导入包
import "xxx/xxx/..."
//or
import ("xxx/xxx/...";"xxx/xxx/...")
注意:分号可以不加,但是得写成多行,不然报错
三、变量、变量类型、类型转换
- 声明变量的方式
-
var <vName1> [, <vName2> , ...] <vType> [= <value1> , <value2> , ...]
多个变量的类型取最后一个,不初始化变量的话,将会自动初始化为默认值比如bool的初始化为false,数字类型的初始化为0,string的初始化为""等等 -
var <vName> [, <vName2> , ...] = <value1> [,<value2> , ...]
自动根据初始化的值进行类型声明,如果都是数字类型,则根据数字精度进行自动判断 -
<vName> [, <vName2> , ...] := <value1> [,<value2> , ...]
上一个的简便写法,不同之处在于只能写在函数内部 -
var ()
同时声明多个变量
var ( <vName1> [, <vName2> , ...] <vType> [= <value1> , <value2> , ...] <vName> [, <vName2> , ...] = <value1> [,<value2> ... )
-
- 变量类型(int、uint、uintptr长度是根据机器位数来决定的,在32位机器上就是32位长,在64位机器上就是64位长,没什么特别原因优先用这三个类型)
- bool
- string
- int int8 int16 int32/rune int64
- uint uint8/byte uint16 uint32 uint64 uintptr
- float32 float64
- complex64 complex128
- 类型转换
vType(vName)
,任何类型转换都必须加上vType(),而不能像大多数语言一样部分类型转换是自动的
四、常量
const xxx
五、函数
- 声明函数
func <funcName>([... , <vNamen> [vTypen],] <vNamen1> <vTypen1>) ([returnVariable1,] <returnType1> [,[returnVariable2,] <returnType2> , ...])
- 返回值(返回值的类型被定义在函数声明里面,且可以返回多个值),如果函数声明中只定义了返回值类型,则return语句要加上需要返回的变量,用逗号分隔。如果函数声明中定义了返回值变量名,则只需要一个return关键字就可以了
六、闭包
例子:
func fibonacci() func() int {
llNumber := 0
lNumber := 1
init := 0
return func() int {
for init < 2 {
init ++
return init - 1
}
result := llNumber + lNumber
llNumber = lNumber
lNumber = result
return result
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
网友评论