欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文搞懂Go語(yǔ)言中條件語(yǔ)句的使用

 更新時(shí)間:2022年04月22日 11:08:58   作者:隱姓埋名4869  
這篇文章主要介紹了Go語(yǔ)言中五個(gè)常用條件語(yǔ)句的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

條件語(yǔ)句需要開(kāi)發(fā)者通過(guò)指定一個(gè)或多個(gè)條件,并通過(guò)測(cè)試條件是否為 true 來(lái)決定是否執(zhí)行指定語(yǔ)句,并在條件為 false 的情況在執(zhí)行另外的語(yǔ)句。

Go 語(yǔ)言提供了以下幾種條件判斷語(yǔ)句:

語(yǔ)句描述
if 語(yǔ)句if 語(yǔ)句 由一個(gè)布爾表達(dá)式后緊跟一個(gè)或多個(gè)語(yǔ)句組成。
if...else 語(yǔ)句if 語(yǔ)句 后可以使用可選的 else 語(yǔ)句, else 語(yǔ)句中的表達(dá)式在布爾表達(dá)式為 false 時(shí)執(zhí)行
if 嵌套語(yǔ)句你可以在 if 或 else if 語(yǔ)句中嵌入一個(gè)或多個(gè) if 或 else if 語(yǔ)句。
switch 語(yǔ)句switch 語(yǔ)句用于基于不同條件執(zhí)行不同動(dòng)作。
select 語(yǔ)句select 語(yǔ)句類似于 switch 語(yǔ)句,但是select會(huì)隨機(jī)執(zhí)行一個(gè)可運(yùn)行的case。如果沒(méi)有case可運(yùn)行,它將阻塞,直到有case可運(yùn)行。

if語(yǔ)句

if 語(yǔ)句由布爾表達(dá)式后緊跟一個(gè)或多個(gè)語(yǔ)句組成。

語(yǔ)法

Go 編程語(yǔ)言中 if 語(yǔ)句的語(yǔ)法如下:

if 布爾表達(dá)式 { /* 在布爾表達(dá)式為 true 時(shí)執(zhí)行 */ }

If 在布爾表達(dá)式為 true 時(shí),其后緊跟的語(yǔ)句塊執(zhí)行,如果為 false 則不執(zhí)行。

實(shí)例

使用 if 判斷一個(gè)數(shù)變量的大?。?/p>

package main
  
import "fmt"
  
func main() {
   /* 定義局部變量 */
   var a int = 10
  
   /* 使用 if 語(yǔ)句判斷布爾表達(dá)式 */
   if a < 20 {
       /* 如果條件為 true 則執(zhí)行以下語(yǔ)句 */
       fmt.Printf("a 小于 20\n" )
   }
   fmt.Printf("a 的值為 : %d\n", a)
}

以上代碼執(zhí)行結(jié)果為:

a 小于 20 a 的值為 : 10

if...else 語(yǔ)句

if 語(yǔ)句 后可以使用可選的 else 語(yǔ)句, else 語(yǔ)句中的表達(dá)式在布爾表達(dá)式為 false 時(shí)執(zhí)行。

語(yǔ)法

Go 編程語(yǔ)言中 if...else 語(yǔ)句的語(yǔ)法如下:

if 布爾表達(dá)式 { /* 在布爾表達(dá)式為 true 時(shí)執(zhí)行 */ } else { /* 在布爾表達(dá)式為 false 時(shí)執(zhí)行 */ }

If 在布爾表達(dá)式為 true 時(shí),其后緊跟的語(yǔ)句塊執(zhí)行,如果為 false 則執(zhí)行 else 語(yǔ)句塊。

實(shí)例

使用 if else 判斷一個(gè)數(shù)的大?。?/p>

package main
  
import "fmt"
  
func main() {
   /* 局部變量定義 */
   var a int = 100;
  
   /* 判斷布爾表達(dá)式 */
   if a < 20 {
       /* 如果條件為 true 則執(zhí)行以下語(yǔ)句 */
       fmt.Printf("a 小于 20\n" );
   } else {
       /* 如果條件為 false 則執(zhí)行以下語(yǔ)句 */
       fmt.Printf("a 不小于 20\n" );
   }
   fmt.Printf("a 的值為 : %d\n", a);
  
}

以上代碼執(zhí)行結(jié)果為:

a 不小于 20 a 的值為 : 100

if 語(yǔ)句嵌套

你可以在 if 或 else if 語(yǔ)句中嵌入一個(gè)或多個(gè) if 或 else if 語(yǔ)句。

語(yǔ)法

Go 編程語(yǔ)言中 if...else 語(yǔ)句的語(yǔ)法如下:

if 布爾表達(dá)式 1 { /* 在布爾表達(dá)式 1 為 true 時(shí)執(zhí)行 */ if 布爾表達(dá)式 2 { /* 在布爾表達(dá)式 2 為 true 時(shí)執(zhí)行 */ } }

你可以以同樣的方式在 if 語(yǔ)句中嵌套 else if...else 語(yǔ)句

實(shí)例

嵌套使用 if 語(yǔ)句:

package main
  
import "fmt"
  
func main() {
   /* 定義局部變量 */
   var a int = 100
   var b int = 200
  
   /* 判斷條件 */
   if a == 100 {
       /* if 條件語(yǔ)句為 true 執(zhí)行 */
       if b == 200 {
          /* if 條件語(yǔ)句為 true 執(zhí)行 */
          fmt.Printf("a 的值為 100 , b 的值為 200\n" );
       }
   }
   fmt.Printf("a 值為 : %d\n", a );
   fmt.Printf("b 值為 : %d\n", b );
}

以上代碼執(zhí)行結(jié)果為:

a 的值為 100 , b 的值為 200 a 值為 : 100 b 值為 : 200

switch 語(yǔ)句

switch 語(yǔ)句用于基于不同條件執(zhí)行不同動(dòng)作,每一個(gè) case 分支都是唯一的,從上至下逐一測(cè)試,直到匹配為止。

switch 語(yǔ)句執(zhí)行的過(guò)程從上至下,直到找到匹配項(xiàng),匹配項(xiàng)后面也不需要再加 break。

switch 默認(rèn)情況下 case 最后自帶 break 語(yǔ)句,匹配成功后就不會(huì)執(zhí)行其他 case,如果我們需要執(zhí)行后面的 case,可以使用 fallthrough 。

語(yǔ)法

Go 編程語(yǔ)言中 switch 語(yǔ)句的語(yǔ)法如下:

switch var1 { case val1: ... case val2: ... default: ... }

變量 var1 可以是任何類型,而 val1 和 val2 則可以是同類型的任意值。類型不被局限于常量或整數(shù),但必須是相同的類型;或者最終結(jié)果為相同類型的表達(dá)式。

您可以同時(shí)測(cè)試多個(gè)可能符合條件的值,使用逗號(hào)分割它們,例如:case val1, val2, val3。

流程圖:

實(shí)例

package main
  
import "fmt"
  
func main() {
   /* 定義局部變量 */
   var grade string = "B"
   var marks int = 90
  
   switch marks {
      case 90: grade = "A"
      case 80: grade = "B"
      case 50,60,70 : grade = "C"
      default: grade = "D" 
   }
  
   switch {
      case grade == "A" :
         fmt.Printf("優(yōu)秀!\n" )   
      case grade == "B", grade == "C" :
         fmt.Printf("良好\n" )     
      case grade == "D" :
         fmt.Printf("及格\n" )     
      case grade == "F":
         fmt.Printf("不及格\n" )
      default:
         fmt.Printf("差\n" );
   }
   fmt.Printf("你的等級(jí)是 %s\n", grade );     
}

以上代碼執(zhí)行結(jié)果為:

優(yōu)秀! 你的等級(jí)是 A

Type Switch

switch 語(yǔ)句還可以被用于 type-switch 來(lái)判斷某個(gè) interface 變量中實(shí)際存儲(chǔ)的變量類型。

Type Switch 語(yǔ)法格式如下:

switch x.(type){ case type: statement(s); case type: statement(s); /* 你可以定義任意個(gè)數(shù)的case */ default: /* 可選 */ statement(s); }

實(shí)例

package main
  
import "fmt"
  
func main() {
   var x interface{}
      
   switch i := x.(type) {
      case nil: 
         fmt.Printf(" x 的類型 :%T",i)               
      case int: 
         fmt.Printf("x 是 int 型")                     
      case float64:
         fmt.Printf("x 是 float64 型")         
      case func(int) float64:
         fmt.Printf("x 是 func(int) 型")                     
      case bool, string:
         fmt.Printf("x 是 bool 或 string 型" )     
      default:
         fmt.Printf("未知型")   
   } 
}

以上代碼執(zhí)行結(jié)果為:

x 的類型 :<nil>

fallthrough

使用 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語(yǔ)句,fallthrough 不會(huì)判斷下一條 case 的表達(dá)式結(jié)果是否為 true。

實(shí)例

package main
  
import "fmt"
  
func main() {
  
    switch {
    case false:
            fmt.Println("1、case 條件語(yǔ)句為 false")
            fallthrough
    case true:
            fmt.Println("2、case 條件語(yǔ)句為 true")
            fallthrough
    case false:
            fmt.Println("3、case 條件語(yǔ)句為 false")
            fallthrough
    case true:
            fmt.Println("4、case 條件語(yǔ)句為 true")
    case false:
            fmt.Println("5、case 條件語(yǔ)句為 false")
            fallthrough
    default:
            fmt.Println("6、默認(rèn) case")
    }
}

以上代碼執(zhí)行結(jié)果為:

2、case 條件語(yǔ)句為 true 3、case 條件語(yǔ)句為 false 4、case 條件語(yǔ)句為 true

從以上代碼輸出的結(jié)果可以看出:switch 從第一個(gè)判斷表達(dá)式為 true 的 case 開(kāi)始執(zhí)行,如果 case 帶有 fallthrough,程序會(huì)繼續(xù)執(zhí)行下一條 case,且它不會(huì)去判斷下一個(gè) case 的表達(dá)式是否為 true。

select 語(yǔ)句

select 是 Go 中的一個(gè)控制結(jié)構(gòu),類似于用于通信的 switch 語(yǔ)句。每個(gè) case 必須是一個(gè)通信操作,要么是發(fā)送要么是接收。

select 隨機(jī)執(zhí)行一個(gè)可運(yùn)行的 case。如果沒(méi)有 case 可運(yùn)行,它將阻塞,直到有 case 可運(yùn)行。一個(gè)默認(rèn)的子句應(yīng)該總是可運(yùn)行的。

語(yǔ)法

Go 編程語(yǔ)言中 select 語(yǔ)句的語(yǔ)法如下:

select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s);
    /* 你可以定義任意數(shù)量的 case */
    default : /* 可選 */
       statement(s);
}

以下描述了 select 語(yǔ)句的語(yǔ)法:

  • 每個(gè) case 都必須是一個(gè)通信
  • 所有 channel 表達(dá)式都會(huì)被求值
  • 所有被發(fā)送的表達(dá)式都會(huì)被求值
  • 如果任意某個(gè)通信可以進(jìn)行,它就執(zhí)行,其他被忽略。
  • 如果有多個(gè) case 都可以運(yùn)行,Select 會(huì)隨機(jī)公平地選出一個(gè)執(zhí)行。其他不會(huì)執(zhí)行。

否則:

  • 如果有 default 子句,則執(zhí)行該語(yǔ)句。

    如果沒(méi)有 default 子句,select 將阻塞,直到某個(gè)通信可以運(yùn)行;Go 不會(huì)重新對(duì) channel 或值進(jìn)行求值。

實(shí)例

select 語(yǔ)句應(yīng)用演示:

package main
  
import "fmt"
  
func main() {
   var c1, c2, c3 chan int
   var i1, i2 int
   select {
      case i1 = <-c1:
         fmt.Printf("received ", i1, " from c1\n")
      case c2 <- i2:
         fmt.Printf("sent ", i2, " to c2\n")
      case i3, ok := (<-c3):  // same as: i3, ok := <-c3
         if ok {
            fmt.Printf("received ", i3, " from c3\n")
         } else {
            fmt.Printf("c3 is closed\n")
         }
      default:
         fmt.Printf("no communication\n")
   }   
}

以上代碼執(zhí)行結(jié)果為:

no communication

校內(nèi)舉辦跑步比賽,10s內(nèi)進(jìn)去比賽,分性別,進(jìn)入男子組,女子組

package main
  
import "fmt"
  
//if語(yǔ)句嵌套
//校內(nèi)舉辦跑步比賽,10s內(nèi)進(jìn)去比賽,分性別,進(jìn)入男子組,女子組
func main() {
    var (
        a = 9
        b = "男"
    )
    if a < 10 && b == "男" {
        fmt.Println("進(jìn)去決賽")
        fmt.Println("進(jìn)入男子")
    }
    if a < 10 && b == "女" {
        fmt.Println("進(jìn)去決賽")
        fmt.Println("進(jìn)入女子組")
    }
    if a > 10 {
        fmt.Println("滾")
    }
  
    /*
        if a < 10 {
            fmt.Println("進(jìn)去決賽")
  
            if b == "男" {
                fmt.Println("進(jìn)入男子")
            } else {
                fmt.Println("進(jìn)入女子")
            }
        } else {
            fmt.Println("滾")
        }*/
}
  
//switch語(yǔ)句,對(duì)學(xué)生成績(jī)進(jìn)行考評(píng),90-100:優(yōu)秀,80-89:良好,60-79及格,60以下,不及格
package main
  
import "fmt"
  
func main() {
  
    var vaule = 1
  
    switch vaule {
    case 1:
        fmt.Println("1")
  
    case 2:
        fmt.Println("2")
  
    case 3:
        fmt.Println("3")
    default:
        fmt.Println("滾犢子")
    }
  
    /*
        var a = 77
        //等效于if else 語(yǔ)句
        switch {
        case a >= 90 && a <= 100:
            fmt.Println("好")
        case a >= 80 && a <= 89:
            fmt.Println("還行")
        case a >= 60 && a <= 79:
            fmt.Println("合格")
        default:
            fmt.Println("不合格")
        }*/
}

以上就是一文搞懂Go語(yǔ)言中條件語(yǔ)句的使用的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言條件語(yǔ)句的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在golang xorm中使用postgresql的json,array類型的操作

    在golang xorm中使用postgresql的json,array類型的操作

    這篇文章主要介紹了在golang xorm中使用postgresql的json,array類型的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Golang中閉包與常用場(chǎng)景詳解

    Golang中閉包與常用場(chǎng)景詳解

    在很多的開(kāi)源項(xiàng)目里,經(jīng)??吹介]包的運(yùn)用,這篇文章主要為大家簡(jiǎn)要記錄一下閉包的概念和一些常用的場(chǎng)景,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    這篇文章主要介紹了golang項(xiàng)目如何上線部署到Linu服務(wù)器,本文通過(guò)兩種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Golang使用panic控制程序錯(cuò)誤流程

    Golang使用panic控制程序錯(cuò)誤流程

    這篇文章主要介紹了Golang使用panic控制程序錯(cuò)誤流程,Golang panic異常處理機(jī)制中的一種流程控制方式,用于中斷程序流程并觸發(fā)異常處理
    2023-04-04
  • golang 打印error的堆棧信息操作

    golang 打印error的堆棧信息操作

    這篇文章主要介紹了golang 打印error的堆棧信息操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • GoLang之標(biāo)準(zhǔn)庫(kù)encoding/json包

    GoLang之標(biāo)準(zhǔn)庫(kù)encoding/json包

    本文主要介紹了GoLang之標(biāo)準(zhǔn)庫(kù)encoding/json包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 代碼之美:探索Go語(yǔ)言斷行規(guī)則的奧秘

    代碼之美:探索Go語(yǔ)言斷行規(guī)則的奧秘

    Go語(yǔ)言是一門以簡(jiǎn)潔、清晰和高效著稱的編程語(yǔ)言,而斷行規(guī)則是其代碼風(fēng)格的重要組成部分,通過(guò)深入研究Go語(yǔ)言的斷行規(guī)則,我們可以更好地理解和編寫優(yōu)雅的代碼,本文將從語(yǔ)法規(guī)范、代碼風(fēng)格和最佳實(shí)踐等方面進(jìn)行探討,幫助讀者更好地理解和應(yīng)用Go語(yǔ)言的斷行規(guī)則
    2023-10-10
  • Go語(yǔ)言開(kāi)發(fā)k8s之ConfigMap操作解析

    Go語(yǔ)言開(kāi)發(fā)k8s之ConfigMap操作解析

    這篇文章主要為大家介紹了Go語(yǔ)言開(kāi)發(fā)k8s之ConfigMap操作示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 深入探究Golang中l(wèi)og標(biāo)準(zhǔn)庫(kù)的使用

    深入探究Golang中l(wèi)og標(biāo)準(zhǔn)庫(kù)的使用

    Go?語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的?log?包設(shè)計(jì)簡(jiǎn)潔明了,易于上手,可以輕松記錄程序運(yùn)行時(shí)的信息、調(diào)試錯(cuò)誤以及跟蹤代碼執(zhí)行過(guò)程中的問(wèn)題等。本文主要來(lái)深入探究?log?包的使用和原理,幫助讀者更好地了解和掌握它
    2023-05-05
  • 讓GPT教你用go語(yǔ)言和C語(yǔ)言開(kāi)發(fā)IDE配置學(xué)習(xí)

    讓GPT教你用go語(yǔ)言和C語(yǔ)言開(kāi)發(fā)IDE配置學(xué)習(xí)

    這篇文章主要介紹了讓GPT教你用go語(yǔ)言和C語(yǔ)言開(kāi)發(fā)IDE配置學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10

最新評(píng)論