Maison >développement back-end >Golang >Comment puis-je obtenir le répertoire de packages correct dans Go lors de l'utilisation de « ioutil.ReadFile() » dans les tests ?

Comment puis-je obtenir le répertoire de packages correct dans Go lors de l'utilisation de « ioutil.ReadFile() » dans les tests ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-12 20:41:10870parcourir

How Can I Get the Correct Package Directory in Go When Using `ioutil.ReadFile()` in Tests?

Obtention du répertoire des packages dans Go

Vous êtes confronté à un problème où ioutil.ReadFile() tente de localiser un fichier dans le mauvais répertoire lorsque vous l'appelez à partir d'un package de test. Le problème se résume à la façon dont le répertoire de travail actuel (CWD) est déterminé dans votre configuration.

Pour résoudre ce problème, la solution réside dans l'utilisation de runtime.Caller(). Cette fonction fournit des informations sur l'appelant de la fonction actuelle. En utilisant le chemin du fichier renvoyé par runtime.Caller(), vous pouvez dériver le répertoire du package où se trouve le fichier.

Voici un exemple qui montre comment utiliser runtime.Caller() :

package main

import (
    "fmt"
    "runtime"
    "path"
)

func main() {
    _, filename, _, ok := runtime.Caller(0)
    if !ok {
        panic("No caller information")
    }
    fmt.Printf("Filename : %q, Dir : %q\n", filename, path.Dir(filename))
}

Lorsque ce code est exécuté, il imprimera le nom de fichier et le répertoire du fichier qui l'a appelé. Cela vous permet de localiser avec précision les fichiers quel que soit le CWD.

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