>  기사  >  백엔드 개발  >  golang 흐름 제어 문이란 무엇입니까?

golang 흐름 제어 문이란 무엇입니까?

青灯夜游
青灯夜游원래의
2022-12-28 17:58:284155검색

흐름 제어 문: 1. 부울 표현식과 하나 이상의 문으로 구성된 if 문 2. "if...else" 문, 부울 표현식이 false일 때 else의 표현식이 실행됩니다. 다양한 조건에 따라 다양한 작업을 수행하는 데 사용되는 스위치 문 5. for 루프 문, 구문 "for k,v := range oldmap[k]=v}"; , 계속하세요.

golang 흐름 제어 문이란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

golang 흐름 제어문의 기본 내용을 살펴보겠습니다.

1. 조건 분기문

은 C 언어와 유사합니다.

Statement 설명
if 문. if 문은 부울 표현식과 그 뒤에 오는 하나 이상의 문으로 구성됩니다.
if…else 문 if 문 뒤에는 선택적 else 문이 올 수 있습니다. else 문의 표현식은 부울 표현식이 false일 때 실행됩니다.
switch 문 switch 문은 다양한 조건에 따라 다양한 작업을 수행하는 데 사용됩니다.
select 문 select 문은 switch 문과 유사하지만 select는 실행 가능한 사례를 무작위로 실행합니다. 실행할 사례가 없으면 실행할 사례가 있을 때까지 차단됩니다.
  • if 문
    구문은 다음과 같습니다.
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}
  • if-else 문
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else {
	/* 在布尔表达式为 false 时执行 */
}
  • switch 문
    해당 변수<span attribute>v</span>val1 등 모든 유형이 될 수 있습니다. val2 동일한 유형의 모든 값일 수 있으며 유형은 상수 또는 정수로 제한되지 않거나 최종 결과는 동일한 유형의 표현식입니다. <span class="hljs-attribute">v</span>可以是任何类型,val1val2可以是同类型的任意值,类型不局限为常量或者整数,或者最终结果为相同类型的表达式。
switch v {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}
  • select语句
    select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。它将会随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。
select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s);
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}

注意:

  • 每个case必须都是一个通信
  • 所有channel表达式都会被求值,所有被发送的表达式都会被求值
  • 如果任意某一个通信都可以,它就执行,其他就忽略
  • 如果有多个case都可以运行,select就会随机挑选一个来执行。
  • 如果没有一个case可以被运行:如果有default子句,就执行default子句,select将被阻塞,直到某个通信可以运行,从而避免饥饿问题。

2、循环语句

2.1 循环处理语句

与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近。

go中时使用for实现循环的,共有三种形式:

for key, value := range oldmap {
	newmap[key] = value
}
select 문 select는 Go의 제어 구조로, 통신에 사용되는 스위치 문과 유사합니다. 각 사례는 전송 또는 수신의 통신 작업

语法
和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>
이어야 합니다. 실행 가능한 케이스를 무작위로 실행합니다. 실행할 사례가 없으면 실행할 사례가 있을 때까지 차단됩니다. 기본 절은 항상 실행 가능해야 합니다.

a := 0
for a<5 {
	fmt.Printf("%d\n", a)
	a++
	if a==2 {
		break;
	}
}
/* output
0
1
2
*/

참고:

각 사례는 통신이어야 합니다.모든 채널 표현식이 평가되고 전송된 모든 표현식이 평가됩니다.

한 통신이 정상이면 그냥 실행하고 나머지는 무시하세요 실행할 수 있는 사례가 여러 개인 경우 select는 실행할 사례를 무작위로 선택합니다. 실행할 수 있는 사례가 없는 경우: 기본 절이 있는 경우 기본 절이 실행되며, 특정 통신이 실행될 때까지 선택이 차단되므로 기아 문제를 피할 수 있습니다.

2、 루프 문 대부분의 언어와 달리 Go 언어의 루프 문은 for 키워드만 지원하고 while 및 do-while 구조는 지원하지 않습니다. for 키워드의 기본 사용법은 C 언어 및 C++의 사용법과 매우 유사합니다. . go에서 루프를 구현하기 위해 for를 사용하는 세 가지 형태가 있습니다. 구문

2.1 루프 처리 문
🎜🎜🎜은 C 언어의 for와 동일합니다. 🎜🎜for init; 조건; 🎜🎜은 C 언어의 🎜🎜조건{}🎜🎜🎜🎜 및 <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
*/
🎜🎜🎜🎜2.2 루프 제어문🎜🎜🎜🎜🎜🎜제어문🎜🎜자세한 설명🎜🎜 🎜 🎜🎜🎜break🎜🎜루프에서 중단되거나 스위치 문🎜🎜🎜🎜continue🎜🎜현재 루프의 나머지 문을 건너뛰고 다음 사이클을 계속합니다.🎜🎜🎜🎜goto 문🎜🎜표시된 부분으로 제어 전송 성명 🎜🎜🎜🎜

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标志的哪一行上。

【相关推荐:Go视频教程编程教学

위 내용은 golang 흐름 제어 문이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.