Larangan Fallthrough dalam Suis Jenis:
Dalam Go, pernyataan "fallthrough" ialah binaan bahasa yang membenarkan pelaksanaan kes berikutnya dalam pernyataan suis tanpa pernyataan putus yang jelas. Walau bagaimanapun, kegagalan tidak dibenarkan dalam suis jenis.
Mengapakah ini berlaku?
Suis jenis menentukan jenis ungkapan dan menetapkannya kepada pembolehubah yang dinyatakan dalam kes suis. Pembolehubah ini mewakili jenis ungkapan tertentu pada titik itu dalam suis.
Jika gagal dibenarkan, akan ada isu jenis ketidakpadanan. Mari kita pertimbangkan coretan kod yang disediakan:
//Empty interface var x interface{} //A int, float64, bool or string value x = ... switch i := x.(type) { case int: fmt.Println(i + 1) case float64: fmt.Println(i + 2.0) case bool: fallthrough case string: fmt.Printf("%v", i) default: fmt.Println("Unknown type. Sorry!") }
Sekiranya bool adalah benar, pembolehubah i diberikan nilai bool dalam antara muka x. Jika kegagalan dibenarkan, pelaksanaan akan diteruskan ke kes rentetan. Walau bagaimanapun, pada ketika itu, pembolehubah i masih akan memegang nilai bool. Ketidakpadanan jenis ini akan mengakibatkan ralat.
Selain itu, pernyataan fallthrough tidak masuk akal dalam suis jenis kerana ia tidak boleh mengubah jenis pembolehubah i. Suis jenis bertujuan untuk mengecilkan jenis ungkapan kepada jenis tertentu pada setiap kes. Membenarkan kegagalan akan mengalahkan tujuan ini.
Untuk mencapai gelagat yang diingini, seseorang boleh menggunakan pernyataan suis dengan penukaran jenis eksplisit dalam setiap kes, seperti ditunjukkan di bawah:
switch i := x.(type) { case bool, string: if b, ok := i.(bool); ok { fmt.Println(b) // value as bool } else { fmt.Printf("%v", i) // value as string } default: fmt.Println("Unknown type. Sorry!") }
Dengan menggunakan pendekatan ini , seseorang boleh mengendalikan pelbagai jenis dalam satu penyataan suis tanpa memerlukan kegagalan.
Atas ialah kandungan terperinci Mengapa Fallthrough Dilarang dalam Suis Jenis Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!