>  기사  >  백엔드 개발  >  Go 语言基础 - if-else

Go 语言基础 - if-else

Go语言进阶学习
Go语言进阶学习앞으로
2023-07-24 15:38:501046검색

if는 조건의 평가 결과가 true인 경우 if 뒤의 중괄호 안의 코드가 false인 경우 실행됩니다. 중괄호 안의 코드가 실행됩니다.

이 글을 통해 if문의 다양한 구문과 사용법에 대해 알아 보겠습니다.

if 구문

if 문의 구문은 다음과 같습니다.

if condition {
}

조건이 true로 판단되면 중괄호 {} 사이의 코드가 실행됩니다.

C와 같은 다른 언어와 달리 중괄호 {}는 코드 사이에 한 줄만 있더라도 필수입니다.

숫자가 짝수인지 홀수인지 판별하는 간단한 프로그램을 작성해 보겠습니다.

package main

import (
    "fmt"
)

func main() {
    num := 10
    if num%2 == 0 { //checks if number is even
        fmt.Println("The number", num, "is even")
        return
    }
    fmt.Println("The number", num, "is odd")
}

Execute [1]

위 코드의 9행에서 num%2는 num을 2로 나눈 나머지가 0인지 여부를 결정합니다. num의 차수가 짝수이므로 나머지는 0이고, 프로그램은 숫자 10이 짝수라고 출력합니다.

if-else 문

if 문에 해당하는 else 분기가 있으면 조건 결과가 false인 경우 else 분기가 실행됩니다.

if condition {
} else {
}

위 코드에서 조건 결과가 false이면 else 분기 {} 사이의 코드 줄이 실행됩니다.

숫자가 홀수인지 짝수인지 판단하기 위해 if-else 문을 사용하여 프로그램을 다시 작성해 보겠습니다.

package main

import (
    "fmt"
)

func main() {
    num := 11
    if num%2 == 0 { //checks if number is even
        fmt.Println("the number", num, "is even")
    } else {
        fmt.Println("the number", num, "is odd")
    }
}

Execution[2]

위 코드에서는 조건이 참일 때 직접 반환하지 않고, 조건이 거짓일 때 실행될 else 문을 생성했습니다. 우리의 경우 11은 홀수이므로 if 조건이 거짓이므로 else 문의 코드가 실행됩니다.

上面代码执行输出:

the number 11 is odd

if-else if-else 语句

if 语句不仅有 else 分支,还可以有 else-if 分支,语法如下:

if condition1 {
...
} else if condition2 {
...
} else {
...
}

代码执行时会从上之下判断每个分支的 condition 是否为 true。

上面的代码,如果 condition1 为 true,将会执行 condition1 后面 {} 之间的代码;

如果 condition1 为 false 且 condition2 为 true,则会执行 condition2 后面 {} 之间的代码;

如果 condition1 和 condition2 都为 false,则会执行 else 后面 {} 之间的代码。

可以有任意数量的 else-if 语句块。

通常,只要 if 和 else-if 语句有一个 condition 为 true,就会执行相应的代码块,如果没有为 true 的情况则会执行 else 分支的代码

我们使用 else-if 语句编写一段程序:

package main

import (
    "fmt"
)

func main() {
    num := 99
    if num <= 50 {
        fmt.Println(num, "is less than or equal to 50")
    } else if num >= 51 && num <= 100 {
        fmt.Println(num, "is between 51 and 100")
    } else {
        fmt.Println(num, "is greater than 100")
    }
}

执行[3]

上面的代码,else if num >= 51 && num <= 100 条件为 true,所以执行输出:

99 is between 51 and 100

if 包含初始化语句

if 语句的一种变体是在判断条件之前,可以有短变量声明语句,语法如下:

if assignment-statement; condition {
}

上面的代码片段,短变量声明语句会优先执行。

我们用上面的语法重写代码来判断数字是偶数还是奇数。

package main

import (
    "fmt"
)

func main() {
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println(num,"is even")
    }  else {
        fmt.Println(num,"is odd")
    }
}

执行[4]

上面代码第 8 行,变量 num 在 if 语句中被初始化,

需要注意的是,num 的作用域仅限于 if-else 语句块内,即如果我们在 if-else 之外访问 num,编译器将会报错

当我们仅仅想声明一个只在 if-else 内部使用的变量时,这种语法就可以派上用场,可确保变量的作用范围仅在 if-else 语句内。

else 语句应该在 if 语句的右大括号 } 之后的同一行开始。如果不是,会编译报错。

写一小段程序理解下:

package main

import (
    "fmt"
)

func main() {
    num := 10
    if num % 2 == 0 { //checks if number is even
        fmt.Println("the number is even")
    }
    else {
        fmt.Println("the number is odd")
    }
}

执行[5]

上面代码的第 11 行,else 语句没有紧跟着 if 语句的 } 后面 ,相反,它是另起新的一行开始。如果你执行程序编译器将会报错。

./prog.go:12:5: syntax error: unexpected else, expecting }

报错的原因在于 Go 会自动插入分号,关于插入分号的规则可以点击这里[6]查看更多信息。

其中有一项规则,如果一行代码以 } 结束,则会在 } 后面自动加上分号,所以上面代码第 11 行,会被编译器在 } 后面自动加上分号。

我们的代码就变成了:

...
if num%2 == 0 {
      fmt.Println("the number is even")
};  //semicolon inserted by Go Compiler
else {
      fmt.Println("the number is odd")
}

由于 if-else 是一个独立的语句,中间不应出现分号,因此,程序编译会报错。因此,将 else 紧跟在 if 语句的右大括号 } 之后是语法要求。

正确格式的代码如下:

package main

import (
    "fmt"
)

func main() {
    num := 10
    if num%2 == 0 { //checks if number is even
        fmt.Println("the number is even")
    } else {
        fmt.Println("the number is odd")
    }
}

执行[7]

Go 里的习惯用法

我们已经学习了各种 if-else 语句,针对同一功能可以用这些不同语句编写出不同的实现方法。例如,我们使用 if-else 语句及其变体实现了不同的方式去判断一个数字是奇数还是偶数。你可能会问,哪种方式才是 Go 语言常用的方式呢?

在 Go 的设计哲学中,最好避免不必要的分支和代码缩进。执行时尽早返回也被认为是更好的。

再来展示下之前的代码:

package main

import (
    "fmt"
)

func main() {
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println(num,"is even")
    }  else {
        fmt.Println(num,"is odd")
    }
}

按照 Go 语言的设计哲学该如何编写上述的代码呢?应该尽量避免 else 分支;如果 if 语句的条件为 true,则应尽早执行 return 返回。

就像下面这样:

package main

import (
    "fmt"
)

func main() {
    num := 10;
    if num%2 == 0 { //checks if number is even
        fmt.Println(num, "is even")
        return
    }
    fmt.Println(num, "is odd")

}

执行[8]

在上面代码中,一旦我们发现数字是偶数,就立即返回,就避免了不必要的 else 分支。这就是 Go 语言的哲学 -- “大道至简”,尽量追求代码简洁。

위 내용은 Go 语言基础 - if-else의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Go语言进阶学习에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:다음 기사: