흐름 제어 문: 1. 부울 표현식과 하나 이상의 문으로 구성된 if 문 2. "if...else" 문, 부울 표현식이 false일 때 else의 표현식이 실행됩니다. 다양한 조건에 따라 다양한 작업을 수행하는 데 사용되는 스위치 문 5. for 루프 문, 구문 "for k,v := range oldmap[k]=v}"; , 계속하세요.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
golang 흐름 제어문의 기본 내용을 살펴보겠습니다.
은 C 언어와 유사합니다.
Statement | 설명 |
---|---|
if 문. | if 문은 부울 표현식과 그 뒤에 오는 하나 이상의 문으로 구성됩니다. |
if…else 문 | if 문 뒤에는 선택적 else 문이 올 수 있습니다. else 문의 표현식은 부울 표현식이 false일 때 실행됩니다. |
switch 문 | switch 문은 다양한 조건에 따라 다양한 작업을 수행하는 데 사용됩니다. |
select 문 | select 문은 switch 문과 유사하지만 select는 실행 가능한 사례를 무작위로 실행합니다. 실행할 사례가 없으면 실행할 사례가 있을 때까지 차단됩니다. |
if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ }
if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } else { /* 在布尔表达式为 false 时执行 */ }
<span 클래스 ="hljs- attribute">v</span>
는 val1
및 등 모든 유형이 될 수 있습니다. val2
동일한 유형의 모든 값일 수 있으며 유형은 상수 또는 정수로 제한되지 않거나 최종 결과는 동일한 유형의 표현식입니다. <span class="hljs-attribute">v</span>
可以是任何类型,val1
和val2
可以是同类型的任意值,类型不局限为常量或者整数,或者最终结果为相同类型的表达式。switch v { case val1: ... case val2: ... default: ... }
select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); }
注意:
- 每个case必须都是一个通信
- 所有channel表达式都会被求值,所有被发送的表达式都会被求值
- 如果任意某一个通信都可以,它就执行,其他就忽略
- 如果有多个case都可以运行,select就会随机挑选一个来执行。
- 如果没有一个case可以被运行:如果有default子句,就执行default子句,select将被阻塞,直到某个通信可以运行,从而避免饥饿问题。
与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近。
go中时使用for实现循环的,共有三种形式:
语法 | |
---|---|
和c语言中的for相同 | for init; condition; post {} |
和c语言中的while相同 | for condition{} |
和c语言中的<span class="hljs-function"><span class="hljs-title">for</span><span class="hljs-params">(;;)</span></span> | select 문 |
a := 0
for a<5 {
fmt.Printf("%d\n", a)
a++
if a==2 {
break;
}
}
/* output
0
1
2
*/
<span class="hljs-function"><span class=" hljs-title과 동일합니다. ">for</span><span class="hljs-params">(;;)</span></span>
동일 🎜🎜for{}🎜🎜🎜🎜🎜단, for 루프는 다음을 수행할 수 있습니다. 또한 🎜range🎜를 직접 사용하여 슬라이스, 맵, 배열 및 문자열 등을 반복합니다. 형식은 다음과 같습니다: 🎜// 不使用标记 fmt.Println("---- continue ---- ") for i := 1; i <= 3; i++ { fmt.Printf("i: %d\n", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) continue } } /* output i: 1 i2: 11 i2: 12 i2: 13 i: 2 i2: 11 i2: 12 i2: 13 i: 3 i2: 11 i2: 12 i2: 13 */ // 使用标记 fmt.Println("---- continue label ----") re: for i := 1; i <= 3; i++ { fmt.Printf("i: %d", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) continue re } } /* output i: 1 i2: 11 i: 2 i2: 11 i: 3 i2: 11 */
1、break
break主要用于循环语句跳出循环,和c语言中的使用方式是相同的。且在多重循环的时候还可以使用label标出想要break的循环。
实例代码如下:
a := 0 for a<5 { fmt.Printf("%d\n", a) a++ if a==2 { break; } } /* output 0 1 2 */
2、continue
Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。在多重循环中,可以用标号 label 标出想 continue 的循环。
实例代码如下:
// 不使用标记 fmt.Println("---- continue ---- ") for i := 1; i <= 3; i++ { fmt.Printf("i: %d\n", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) continue } } /* output i: 1 i2: 11 i2: 12 i2: 13 i: 2 i2: 11 i2: 12 i2: 13 i: 3 i2: 11 i2: 12 i2: 13 */ // 使用标记 fmt.Println("---- continue label ----") re: for i := 1; i <= 3; i++ { fmt.Printf("i: %d", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) continue re } } /* output i: 1 i2: 11 i: 2 i2: 11 i: 3 i2: 11 */
3、goto
goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用,可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句,以免造成程序流程混乱。
示例代码如下:
var a int = 0 LOOP: for a<5 { if a == 2 { a = a+1 goto LOOP } fmt.Printf("%d\n", a) a++ } /* output: 0 1 2 3 4 */
以上代码中的LOOP就是一个标签,当运行到goto语句的时候,此时执行流就会跳转到LOOP标志的哪一行上。
위 내용은 golang 흐름 제어 문이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!