Maison >développement back-end >Golang >Comment accéder aux fichiers à partir du répertoire de fichiers source dans Go ?

Comment accéder aux fichiers à partir du répertoire de fichiers source dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 22:27:031101parcourir

How to access files from the source file directory in Go?

Accès aux fichiers à partir du répertoire de fichiers source dans Go

Contrairement aux langages interprétés, les programmes Go sont compilés plutôt qu'exécutés directement. Cela signifie qu'après la compilation, le fichier source n'est plus nécessaire pour que le binaire s'exécute. Par conséquent, Go ne fournit pas d'équivalent direct à la macro __FILE__ de Ruby pour déterminer l'emplacement du fichier source.

La fonction principale utilisée pour générer du code binaire dans Go est la fonction os.Open. Par défaut, cette fonction recherche les fichiers dans le répertoire de travail actuel ($PWD). Pour ouvrir un fichier situé dans le même répertoire que le fichier source, un chemin relatif peut être utilisé. Cependant, cette approche n'est pas toujours pratique, surtout si le fichier source est déplacé ou copié vers un emplacement différent.

Pour résoudre ce problème, il est recommandé d'utiliser la fonction runtime.Caller du package d'exécution. Cette fonction accepte un certain nombre d'arguments, dont l'un est la profondeur de la pile examinée. En fournissant une valeur de 0, runtime.Caller renvoie le nom de fichier et le numéro de ligne de l'appelant de la fonction contenant l'appel à Caller. Par exemple :

<code class="go">import "runtime"

func main() {
    _, file, _, _ := runtime.Caller(0)
    err := os.Open(file + "/myfile.txt")
    if err != nil {
        log.Fatal(err)
    }
}</code>

Dans ce code, la fonction runtime.Caller est utilisée pour obtenir le nom de fichier du fichier source, qui est ensuite combiné avec le chemin relatif du fichier que vous souhaitez ouvrir. Cela garantit que le fichier est toujours ouvert par rapport au fichier source, quel que soit son emplacement.

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