一些函数
- len(传入参数):返回获得参数的长度
- fmt.Scanf():阻塞等待用户输入, 需要格式化别忘了变量是传入地址
fmt.Scanf("%d", &a)
。 - fmt.Scan():不用格式化直接
fmt.Scan(&a)
。 - time.Sleep():休眠一段时间,传入参数可以在
time
包中查找。例如:time.Sleep(time.Second)
类型转换
只有兼容的类型才可以相互转换,例如bool类型和int不兼容(也就是说0是假,非0为真的言论在go语言中不存在)
希望转换的类型(待转换的类型)
例如:int('A')
(这里得到的是ASCII码)
类型别名
使用
type
关键字来给类型赋予其他的名字
type bigInt int64//给int64起一个别名为bigInt
type(
long int64
char byte
)
判断
if判断
if (初始化语句; )判断语句 {
结构体
}else if (初始化语句; )判断语句 {
结构体
}else{
结构体
}
- 可以在
if
中声明一个初始化语句,需要用;
进行分割(不是必要) - 判断语句不用加括号(和java不同)
if
与{
需要在同一行- 在
if
中的初始化变量为局部变量,在if
语句结束后就会被丢弃,如果在if
语句中声明的话,会首先覆盖之前声明的相同名称的变量(不会报错)。例如(和java中的for中声明变量相似,但可以使用相同的变量名称并且覆盖):
switch判断
//第一种声明方法:有变量名
switch (初始化语句; )变量名 {
case 期待值:
结构体
//fallthrough
case 期待值, 期待值......:
结构体
//fallthrough
default:
结构体
}
//第二种声明方法:无变量名
switch {
case 条件语句:
结构体
//fallthrough
default:
结构体
}
switch
和case
在同排缩进case
的结构体不用打括号- 可以在
switch
中声明一个初始化语句,需要用;
进行分割(不是必要) - 如果想要强行执行下面的代码可以添加
fallthrough
- go语言虽然保留了break关键字,但可以不用,因为go语言默认包含在执行语句之后。(也就是说若添加了
fallthrough
则直接执行跳过语句而不执行break
语句)
循环
for 循环
for 初始化条件; 判断条件; 条件变化 {
结构体
}
range 迭代(关键字)
for 元素下标, 该位置的元素 := range 待循环体 {
结构体
}
- 会遍历所有元素
跳转
break, continue, goto
goto
goto 标签名
标签名:
- 可以用在同函数内任何地方