变量的定义
/*使用var定义*/
//隐式初始值(初始化为零值)
var num1 int
var str2 string
//显式初始值
var num2 int = 12
var str2 string = "xiaohei"
//类型自动推断
var a, b, c = 3, 5, "xiaohei"
/*:=方式声明变量*/
f, g := 12, "min"
:=
方式声明变量不适用于包作用域
在包作用域内的每一行必须是以func
、package
、import
、var
、const
等关键字开始
内建变量类型
-
bool
、string
-
(u)int
、(u)int8
、(u)int16
、(u)int32
、(u)int64
、uintptr
-
byte
(8bits)、rune
(32bits) -
float32
、float64
、complex64
、complex128
int
和uint
的大小随操作紫铜变化,在32位系统中是32位大小,在64位系统中是64位大小
complex64
中实部和虚部大小分别为32bits,complex128
中实部和虚部的大小分别为64bits
常量的定义
const a, b = 3, 4
const str string = "min"
当常量没有显示声明类型时,可以当做各种类型使用(也可以声明为特定的类型)
枚举类型
const (
cpp = 0
java = 1
python = 3
)
const
中可以使用iota
自增赋值
const (
cpp = iota
java
python
)
iota
会每行自增一次,而不管是否使用
iota
可以放到表达式中进行计算,然后再赋值
条件语句
golang
中的条件语句包括if
和switch
if
语句
if statement; condition {
// ...
}
or
if condition {
// ...
}
读文件:
contents, err := ioutil.ReadFile(filename)
switch
语句
//在switch后进行条件判断
switch coinflip() {
case "heads":
heads++
case "tails":
tails++
default:
fmt.Println("landed on edge!")
}
or
//在case中进行条件判断
x := 12
switch {
case x > 0:
return +1
default:
return 0
case x < 0:
return -1
}
golang
中的switch中不需要break语句,默认不会执行下一个case;当需要执行下一个case时需使用fallthrough
语句
循环语句
golang
中的循环语句只有for
一种
for init; condition; post {
//...
}
golang
中for
循环中的init、condition、post都可以省略,以此实现while
循环和死循环
函数
func div(a, b int) (int, int) {
//...
}
func div2(a, b int) (q, r int) {
//...
}
向函数作为参数传入:
func apply(op func(int, int) int, a, b int) int {
//...
}
可变参数列表:
func sum(numbers ...int) int {
//...
}
指针
golang
中的指针不可以运算
var a int = 2
var pa *int = &a
*pa = 3
//now a's value is 3
golang
中函数参数的传递方式只有值传递一种
有疑问加站长微信联系(非本文作者)