English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基础教程

Golang 控制语句

Golang 函数 & 方法

Golang 结构体

Golang 切片 & 数组

Golang 字符串(String)

Golang 指针

Golang 接口

Golang 并发

Golang 异常(Error)

Golang 其他杂项

Go 언어 Switch 문

switch 문은 다중 경로 분기 문입니다. 표현식의 값(도입)에 따라 코드의 다른 부분으로 실행을 전환하는 효과적인 방법을 제공합니다. Go 언어는 두 가지 유형의 switch 문을 지원합니다:

  1. 표현식 switch

  2. 타입 switch

표현식 switch

표현식 switch는 C, C ++Java 언어의 switch 문구. 표현식의 값을 기준으로 코드의 다른 부분으로 실행을 분할하는 간단한 방법을 제공합니다.

문법:

switch optstatement; optexpression{
    case expression1: 문장...
    case expression2: 문장...
    ...
    default: 문장...
}

중요 사항:

  • 표현식 switch의 optstatement와 optexpression은 모두 선택적 문구입니다.

  • 그리고 동시에 존재하면optstatementoptpression그러면 그들 사이에 세미콜론 (;)이 필요합니다.

  • switch가 어떤 표현식도 포함하지 않으면, 컴파일러는 이 표현식을 true로 가정합니다.

  • 선택 문구는 optstatement로, 변수 선언, 증가 또는 할당 문구, 함수 호출 등 간단한 문구를 포함합니다.

  • 선택 문구에 변수가 있으면, 이 변수의 범위는 해당 switch 문구에 제한됩니다.

  • switch 문구에서 case와 default 문구는 어떤 break 문구도 포함하지 않습니다. 하지만 필요하다면 break와 fallthrough 문구를 사용할 수 있습니다.

  • default(기본) 문구는 switch 문구에서 선택적입니다.

  • 하나의 case가 여러 값을 포함할 수 있으며, 이 values는 쉼표(,)로 구분됩니다.

  • 만약 case가 어떤 표현식도 포함하지 않는다면, 컴파일러는 이 표현식을 true로 가정합니다.

지정된 숫자가 주는 요일을 얻는 예제:

package main
import "fmt"
func main() {
    // Switch 문구는 두 가지 문구를 동시에 사용할 수 있습니다. 예를 들어, 선택 문구, day :=4 표현식 예: day
    switch day := 4; day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    case 4:
        fmt.Println("Thursday")
    case 5:
        fmt.Println("Friday")
    case 6:
        fmt.Println("Saturday")
    case 7:
        fmt.Println("Sunday")
    default:
        fmt.Println("Invalid")
    }
}

출력:

Thursday

switch 문구는 선택 문구와 표현식을 포함하지 않는 예제:

package main 
  
import "fmt"
  
func main() { 
    var value int = 2 
      
      // switch 문구는 선택 문구와 표현식을 포함하지 않습니다.
   switch { 
       case value == 1: 
       fmt.Println("Hello") 
       case value == 2: 
       fmt.Println("Bonjour") 
       case value == 3: 
       fmt.Println("Namstay") 
       default:  
       fmt.Println("Invalid") 
   } 
  
}

출력:

Bonjour

다음은 기본 문구가 없는 switch 문구입니다. case 문구에서 여러 가지 값을:

package main
import "fmt"
func main() {
    var value string = "five"
    //default 문이 없는 switch 문, case 문에서 여러 값을 포함하는 경우
    switch value {
    case "one":
        fmt.Println("C#")
    case "two", "three":
        fmt.Println("Go")
    case "four", "five", "six":
        fmt.Println("Java")
    }
}

출력:

Java

타입 switch

타입을 비교하려고 할 때 사용하는 타입 switch. 이 switch에서 case는 switch 표현식에 나타나는 타입과 비교할 타입을 포함합니다.

문법:

switch optstatement; type switch expression{
    case typelist 1: 문장...
    case typelist 2: 문장...
    ...
    default: 문장...
}

중요 사항:

  • 선택 사항 문, 즉 opt statement, 이 switch 표현식과 유사합니다.

  • 하나의 case가 여러 값을 포함할 수 있으며, 이 values는 쉼표(,)로 구분됩니다.

  • 타입 switch 문에서 case와 default 문은 break 문을 포함하지 않습니다. 하지만 필요에 따라 break와 fallthrough 문을 사용할 수 있습니다.

  • 타입 switch 문에서 default 문은 선택 사항입니다.

  • type switch expression타입을 결과로 내는 표현식

  • type switch expression에서 := 연산자를 사용하여 표현식을 할당하면, 변수의 타입은 case 문에서 지정된 타입에 따라 결정됩니다. case 문이 두 가지 이상의 타입을 포함하면, 변수의 타입은 type switch expression에서 생성된 타입입니다.

package main
import "fmt"
func main() {
    var value interface{}
    switch q := value.(type) {
    case bool:
        fmt.Println("값은 부울형")
    case float64:
        fmt.Println("값은 float64타입)
    case int:
        fmt.Println("값은 int 타입")
    default:
        fmt.Printf("값의 타입은: %T", q)
    }
}

출력:

값의 타입은: <nil>