Maison  >  Article  >  développement back-end  >  Comment accéder à l’ID de groupe de fichiers (GID) dans Go ?

Comment accéder à l’ID de groupe de fichiers (GID) dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 01:12:31499parcourir

How to Access File Group ID (GID) in Go?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn