2017-09-26 6 views
0

switch/fallthroughキーワードを理解しようとしています。 switchブロックでfallthroughステートメントを使用すると、式が一致しなくても次のブロックが入力されますが、これはすでに一致した場合のみ有効です。下のコードはそのように動作するようですが、私は確信したいだけです。go switch fallthrough

package main 

import "fmt" 

func main() { 
    integer := 5 
    switch integer { 
    case 4: 
     fmt.Println("integer <= 4") 
     fallthrough 
    case 5: 
     fmt.Println("integer <= 5") 
     fallthrough 
    case 6: 
     fmt.Println("integer <= 6") 
     fallthrough 
    case 7: 
     fmt.Println("integer <= 7") 
     fallthrough 
    case 8: 
     fmt.Println("integer <= 8") 
     fallthrough 
    default: 
     fmt.Println("default case") 
    } 
} 

答えて

4

はい。 fallthroughステートメントは、式スイッチ内の次のcase節に制御を移します。次の場合の式は、制御を移すときは考慮されません。

specification says this about the fallthrough statement:ステートメント転送「フォールスルー」

Aは、式「スイッチ」ステートメントの次のケース節の最初の文に制御します。そのような節で最後の空でない文としてのみ使用できます。

とこれは約expression switches

場合またはデフォルト句で

、最後の空でない文は端から流れるべき制御を示すために、(おそらくラベル)「フォールスルー」文でありこの節の最初の文を次の節に追加します。それ以外の場合、制御は「switch」ステートメントの最後に移ります。 「フォールスルー」ステートメントは、式スイッチの最後の節を除くすべてのステートメントの最後のステートメントとして表示されます。

2

そうです。 fallthroughステートメントは、case節の最後のステートメントから、後のケース評価をスキップする次のステートメントに移動します。ケースやデフォルトの句で

、最後の空でない文はそのコントロール を示すために、文はこの句の端から流れるべき「フォールスルー」(おそらくラベル) ことがありますspecから 次の句の最初の声明。そうでなければ、制御は "スイッチ" ステートメントの最後に流れます。 「フォールスルー」ステートメントは、式スイッチの最後の句を除くすべての最後のステートメント として表示されることがあります。