Menghuraikan Kebenaran untuk Fungsi FileMode dalam Go
Fungsi os.FileMode menukar kebenaran daripada pelbagai format sebelum menetapkan bendera. Format ini termasuk integer, perwakilan perlapanan dan kemungkinan bentuk lain.
Apabila menukar daripada integer kepada os.FileMode, fungsi tidak membezakan secara eksplisit sama ada integer diwakili dalam perlapanan atau dalam perpuluhan. Perwakilan perpuluhan ditafsirkan sebagai integer biasa.
Perwakilan perlapanan nombor biasanya digunakan untuk mewakili kebenaran fail dalam sistem seperti Unix. Untuk menentukan nombor perlapanan secara eksplisit dalam Go, sifar pendahuluan didahulukan pada literal. Contohnya, 0700 mewakili nombor perlapanan 700.
Satu aspek penting yang perlu diberi perhatian ialah os.FileMode mewakili kebenaran sebagai integer tidak bertanda 32-bit. Sembilan bit paling tidak ketara bagi integer ini sepadan dengan struktur kebenaran fail Unix standard. Baki 12 bit paling penting dikhaskan untuk menunjukkan ciri fail khas.
Dalam contoh anda, memanggil os.FileMode(700) harus menghasilkan nilai binari 1-010-111-100, yang diterjemahkan kepada oktal perwakilan 274. Walau bagaimanapun, anda mendapati bahawa kebenaran pada fail yang dicipta adalah sebaliknya 254, yang sepadan dengan perwakilan binari --w-r-xr--.
Percanggahan ini boleh dikaitkan dengan fakta bahawa satu bit pendahuluan dalam kedudukan kesepuluh ditetapkan dalam perwakilan binari anda. Bit ini terletak di wilayah yang tidak digunakan bagi perwakilan os.FileMode.
Untuk menjelaskan lebih lanjut, mari kita pecahkan perwakilan binari kebenaran:
Oleh itu, apabila menukar daripada integer kepada os.FileMode, adalah penting untuk memastikan bahawa perwakilan integer ialah sama ada nombor perpuluhan atau nombor perlapanan yang dinyatakan dengan jelas. Ini akan mengelakkan sebarang penukaran yang tidak diingini yang boleh mengakibatkan kebenaran yang salah ditetapkan pada fail.
Atas ialah kandungan terperinci Bagaimanakah Fungsi FileMode Go Mengendalikan Penukaran Kebenaran Perlapanan dan Perpuluhan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!