Mengesahkan Kebolehlaksanaan Fail dalam Go
Dalam Go, anda boleh menentukan sama ada fail boleh laku dengan memeriksa mod failnya, khususnya bit kebenaran . Begini cara anda boleh membina fungsi untuk melaksanakan semakan ini:
<code class="go">import ( "os" ) func IsExecutable(mode os.FileMode) bool { return mode&0111 != 0 }</code>
Fungsi ini menggunakan operator bitwise AND (&) untuk mengekstrak 9 bit kebenaran terendah (0777 octal bitmask) daripada mod fail. Bitmask 0111 membolehkan kami mengesahkan sama ada mana-mana bit kebenaran fail ditetapkan untuk pelaksanaan. Jika mana-mana bit ditetapkan, fungsi akan kembali benar.
Kes Ujian:
Pertimbangkan kes ujian berikut:
<code class="sh">#!/usr/bin/env bash ... # create test directory and files ... # set executable permission on quux.sh chmod +x test/foo/bar/quux.sh ...</code>
Dan yang sepadan Kod Go:
<code class="go">import ( "os" "path/filepath" "fmt" ) func main() { filepath.Walk("test", func(path string, info os.FileInfo, err error) error { if err != nil || info.IsDir() { return err } fmt.Printf("%v %v", path, IsExecutable(info.Mode())) } }</code>
Menjalankan kod ini harus mencetak:
test/foo/bar/baz.txt false test/foo/bar/quux.sh true
Ini mengesahkan bahawa baz.txt tidak boleh dilaksanakan manakala quux.sh adalah, seperti yang dimaksudkan oleh kes ujian.
Keserasian Windows
Penyelesaian yang disediakan adalah khusus untuk sistem Unix, termasuk Linux dan macOS. Untuk Windows, anda boleh menggunakan os. fungsi boleh laku untuk menentukan sama ada fail boleh laku. Walau bagaimanapun, perlu diingat bahawa os.Executable hanya menunjukkan sama ada fail tersebut mempunyai sambungan ".exe", bukan kebolehlaksanaan sebenar.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan sama ada Fail Boleh Laksana dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!