深入剖析Go語言編程中switch語句的使用_Golang

來源:互聯網
上載者:User

switch語句可以讓一個變數對反對值的列表平等進行測試。每個值被稱為一個的情況(case),變數被接通檢查每個開關盒(switch case)。

在Go編程,switch有兩種類型。

運算式Switch - 在運算式switch,case包含相比較,switch運算式的值。

類型Switch - 在這類型switch,此時含有進行比較特殊註明開關運算式的類型。

運算式Switch
在Go程式設計語言中表達switch語句的文法如下:

複製代碼 代碼如下:

switch(boolean-expression or integral type){
    case boolean-expression or integral type  :
       statement(s);     
    case boolean-expression or integral type  :
       statement(s);
    /* you can have any number of case statements */
    default : /* Optional */
       statement(s);
}

以下規則適用於switch語句:

在switch語句中使用的運算式必須具有整體或布林運算式,或者是一個類型,其中所述類具有一個單一的轉換函式,以一個整體或布爾值。如果表達不通過,預設值是true。

可以有任意數量的case語句在switch內。每個case後跟值進行比較,以及一個冒號。

constant-expression 的情況,必須是相同的資料類型,在switch的變數,它必須是一個常量或文字。

當變數被接通等於case的值,以下case中將執行語句。在case語句中break不是必需。

switch語句可以有一個可選預設情況下,它必須出現在開關結束。預設情況下,可用於執行任務時沒有的case為true。則case在預設情況下也不是必須的。

流程圖:

例子:

複製代碼 代碼如下:

package main

import "fmt"

func main() {
   /* local variable definition */
   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("Excellent!\n" )    
      case grade == "B", grade == "C" :
         fmt.Printf("Well done\n" )     
      case grade == "D" :
         fmt.Printf("You passed\n" )     
      case grade == "F":
         fmt.Printf("Better try again\n" )
      default:
         fmt.Printf("Invalid grade\n" );
   }
   fmt.Printf("Your grade is  %s\n", grade );     
}


當上述代碼被編譯和執行時,它產生了以下結果:

Well doneExcellent!Your grade is A

類型Switch
在Go程式設計語言的一個類型switch語句的文法如下:

複製代碼 代碼如下:

switch x.(type){
    case type:
       statement(s);     
    case type:
       statement(s);
    /* you can have any number of case statements */
    default: /* Optional */
       statement(s);
}

以下規則適用於switch語句:

在switch語句中使用必須有介面的Variant 運算式{}輸入。

在switch內可以有任意數量case語句。每一種case後跟的值進行比較,以及一個冒號。

case的類型必須是相同的資料類型,在switch的變數,它必須是一個有效資料類型。

當變數被接通等於某一case中的值,以下case語句將執行。在case語句塊的break不是必需的。

switch語句可以有一個可選預設case,它必須出現在switch的結束。預設情況下,可用於執行任務時沒有匹配case時。default不是必需的。

例子:

複製代碼 代碼如下:

package main

import "fmt"

func main() {
   var x interface{}
    
   switch i := x.(type) {
      case nil:  
         fmt.Printf("type of x :%T",i)               
      case int:  
         fmt.Printf("x is int")                      
      case float64:
         fmt.Printf("x is float64")          
      case func(int) float64:
         fmt.Printf("x is func(int)")                     
      case bool, string:
         fmt.Printf("x is bool or string")      
      default:
         fmt.Printf("don't know the type")    
   }  
}


讓我們編譯和運行上面的程式,這將產生以下結果:

type of x :<nil>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.