1.3 控制语句、函数、指针 - hairyOwl/golangLearn GitHub Wiki
一 控制语句
1.1 条件语句、选择语句
1.1.1条件语句 if if...else if,else if
graph LR
A(开始) --> C{条件a}
C -->|true| D[代码块]
D -->E
C -->|false| E[结束]
F[if if...else]
graph LR
A(开始) --> C{条件a}
C -->|true| D[if code]
C -->|false| E[else code]
D --> G(结束)
E -->G
F[if,else if]
1.1.2 选择语句 switch select
- switch时从上到下执行的,每一个case分支都是唯一的,从上到下逐一测试,直到匹配为止
- switch语句还可以被用于type-switch来判断某个interface变量中实际存储的变量类型
graph LR
A(开始) --> C{条件a}
C -->|case 1| D[代码块1]
C -->|case 2| E[代码块2]
C -->|case 3| F[代码块3]
C -->|default| G[代码块n]
D --> H(结束)
E --> H
F --> H
G --> H
Z[switch]
1.2循环语句、goto break continue
1.2.1 循环语句 for
graph LR
A(开始) --> C{条件a}
C -->|true| D[代码块]
D -->C
C -->|false| E[结束]
F[循环基础流程]
graph LR
A(开始) --> B[init]
B --> C{条件a}
C -->|true| D[代码块]
D -->E[自增]
E -->C
C -->|false| H[结束]
Z[for循环基础流程]
1.2.2 goto break continue
goto
graph
A(开始) --> B[code1]
B -->|goto code3| D
B -->C[code2]
C -->D[code3]
D --> G[结束]
Z[goto]
break 跳出本次循环
graph
A(开始) --> B[code]
B --> C{条件a}
C -->|true| B[代码块]
B --> |break| E[结束]
C --> |false| E
F[break]
continue 跳出一次循环
graph
A(开始) --> B[code]
B --> C{条件a}
C -->|true| B[代码块]
B --> |continue| C
C --> |false| E[结束]
F[continue]
二 函数
- 返回值类型写在最后面
- 可返回多个值
- 一般不致命多个值的名称,即使指定对调用者来说只是参考不强制
- 多返回值常用于返回函数报错
- 函数作为参数
- 参数函数可以是已有函数
- 参数函数可以是匿名函数
- 只有可变参数列表 没有默认参数,可选参数
三 指针
Go语言指针不能运算 ,Go语言参数转递是值传递,但函数中通过指针的转递相当于引用转递,自定义类型要注意是作为值使用还是作为指针使用
-
值传递 c c++
-
引用传递 c++ java python
下面是c++的示例代码
//值传递 拷贝传进来的参数 a相当于n
void pass_by_val(int a){
a++;
}
//引用传递 参数是变量地址 直接修改参数
void pass_by_ref(int& a){
a++;
}
int main(){
int a = 3;
pass_by_val(a);
printf("pass_by_val %d \n",a) //3
pass_by_ref(a);
printf("pass_by_ref %d \n",a) //4
}