【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
if-else条件判断
- 条件判断结构
if condition {
// do something
}
- 带初始化语句的条件判断结构
// 需要注意的是,initializatinon产生的局部变量作用域只在if结构中,如果使用了else分支,那么else分支中也有效
if initialization; condition {
// do something
}
异常
- 当发生异常时的两种退出方式
if err != nil {
fmt.Printf("Program stopping with error %v", err)
return
}
if err != nil {
fmt.Printf("Program stopping with error %v", err)
os.Exit(1)
}
switch结构
- 基本格式
// 注意点:①var1可以是任意类型,而val1和val2必须是相同类型的任意值或产生相同类型值的表达式;②当某个case匹配完之后其默认就不进行下一个case的匹配了,如果需要,可以使用fallthrough来进行;③case后可以使用逗号来表示当前case可以匹配多个值
switch var1 {
case val1:
...
case val2:
...
default:
...
}
// switch中不传入任意值,而依次判断case语句,只要有一个case后的condition结果为true,那么就执行该case语句
switch {
case condition1:
...
case condition2:
...
default:
...
}
// 在switch中添加初始化语句,需要注意语句后面必须带有分号,然后在后续的case语句中则可以使用该初始化的数据值,并且case语句中也只是进行true或false的判断,这里初始化语句所产生的变量只在当前switch结构中有效
switch initialization; {
case val1:
...
case val2:
...
default:
...
}
for结构
- 基本格式
// 基本for循环迭代
for 初始化语句; 条件语句; 修饰语句 {
// do something
}
// 类似while的for循环
for 条件语句 {
// do something
}
// 无限for循环
for {
// do something
}
// for-range迭代器,这里i表示当前迭代的元素的索引,val表示当前迭代的元素值,这里需要注意的是,val是集合中元素的一个值拷贝,因而任何对val的修改都不会反映到原始集合元素中,这里val如果在某些特殊情况下是一个指针,那么对其进行的操作才会反映到原始集合中
for i, val := range coll {
// do something
}
- 对于for-range结构,如果其是对字符串进行遍历,那么其第二个参数是可以解析得到Unicode字符的,比如汉字
标签与goto
-
标签名称一般要求全部大写
-
goto语句一般都不建议使用,因为一般都有更好的选择能够替换goto的使用,并且goto语句可能导致冗长糟糕的代码;
-
如果确实要使用goto,那么尽量将标签放到goto语句之后,这样才不会造成可能存在的无限循环;
-
在goto与标签之间,需要注意不要定义新的变量,否则会产生编译错误