Accès à l'ID de groupe de fichiers (GID) dans Go
Dans Go, les fichiers peuvent être interrogés pour leurs métadonnées à l'aide de os.Stat() fonction, qui renvoie un objet FileInfo. Cet objet fournit des informations sur le fichier, notamment sa taille, son heure de création et ses autorisations. Cependant, récupérer l'ID de groupe (GID) d'un fichier peut être difficile en raison de la nature opaque de la méthode Sys() de l'objet FileInfo.
La méthode Sys() renvoie une valeur Interface{} qui ne contient aucun élément exposé. méthodes. Bien qu'il soit possible d'imprimer la valeur Sys() pour l'inspecter, le GID n'est pas directement accessible.
Solution
Pour surmonter cette limitation, nous pouvons utiliser le reflet module pour déterminer le type réel sous-jacent à la valeur Sys(). Sous Linux, les informations dépendantes du système renvoyées par Sys() sont généralement stockées dans la structure syscall.Stat_t.
<code class="go">import ( "fmt" "os" "reflect" "syscall" ) func main() { file_info, _ := os.Stat(abspath) file_sys := file_info.Sys() file_sys_t := reflect.ValueOf(file_sys).Elem() gid := file_sys_t.FieldByName("Gid").String() fmt.Println("File GID:", gid) }</code>
En convertissant la valeur file_sys en une structure *syscall.Stat_t, nous accédons à sa champs, y compris le champ Gid qui contient l'ID de groupe numérique.
Remarque :
Cette solution est spécifique à Linux, car les informations dépendantes du système renvoyées par Sys( ) peut varier selon les systèmes d'exploitation. Pour une solution portable, vous pouvez utiliser GID.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!