Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah penilaian litar pintas Go mempengaruhi susunan keadaan dalam ungkapan logik?
Penilaian Litar Pendek dalam Go: Perintah dan Prestasi Pelaksanaan
Dalam pengaturcaraan, penilaian litar pintas ialah teknik pengoptimuman di mana ungkapan logik dinilai hanya sebahagiannya jika hasilnya sudah diketahui. Ini boleh meningkatkan prestasi dengan mengelakkan pengiraan yang tidak perlu.
Dalam Go, penilaian litar pintas dilaksanakan untuk && (logik DAN) dan || (logik ATAU) pengendali. Ini bermakna jika operan pertama bagi ungkapan logik dinilai kepada palsu untuk &&, atau benar untuk ||, operan kedua tidak akan dinilai.
Pertimbangkan coretan kod berikut:
if !isValidQueryParams(&queries) || r == nil || len(queries) == 0 { return "", fmt.Errorf("invalid querystring") }
if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) { return "", fmt.Errorf("invalid querystring") }
Dalam kedua-dua kes, jika r ialah sifar atau len(pertanyaan) ialah 0, panggilan ke isValidQueryParams(&pertanyaan) tidak akan dilaksanakan, tanpa mengira susunan syarat. Ini kerana Go mengikut peraturan penilaian litar pintas.
Untuk menunjukkan perkara ini, pertimbangkan kod berikut:
for i := 0; i < 10; i++ { if testFunc(1) || testFunc(2) { // do nothing } } func testFunc(i int) bool { fmt.Printf("function %d called\n", i) return true }
Menjalankan kod ini akan sentiasa mencetak:
$ function 1 called $ function 1 called $ function 1 called $ function 1 called $ function 1 called $ function 1 called $ function 1 called $ function 1 called $ function 1 called $ function 1 called
Ini menunjukkan bahawa Go menilai operan pertama bagi ungkapan OR logik (testFunc(1)) dan serta-merta mengembalikan benar kerana benar || apa-apa pun sentiasa benar. Akibatnya, operan kedua (testFunc(2)) tidak pernah benar-benar dipanggil.
Oleh itu, susunan keadaan dalam ungkapan logik dalam Go boleh memberi kesan pada prestasi apabila penilaian litar pintas digunakan. Susunan optimum akan bergantung pada keadaan tertentu dan kemungkinan setiap keadaan adalah benar atau salah.
Atas ialah kandungan terperinci Bagaimanakah penilaian litar pintas Go mempengaruhi susunan keadaan dalam ungkapan logik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!