Maison >développement back-end >Golang >Comment ouvrir des fichiers relatifs au fichier source dans Go ?

Comment ouvrir des fichiers relatifs au fichier source dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 06:14:30774parcourir

How to Open Files Relative to the Source File in Go?

Ouverture de fichiers relatifs au fichier source dans Go

Dans Go, lorsque vous tentez d'ouvrir un fichier à l'aide de os.Open("myfile. txt") à partir d'un fichier source situé dans $PWD/dir/src.go, le comportement attendu est de rechercher myfile.txt dans $PWD. Cependant, il peut y avoir des scénarios dans lesquels vous souhaitez ouvrir un fichier par rapport au répertoire contenant le fichier source, comme si vous utilisiez __FILE__ dans Ruby.

L'approche Go de la résolution de fichiers

Contrairement aux langages interprétés, Go est compilé, ce qui rend discutable la notion de recherche d'un fichier par rapport au fichier source. Le binaire compilé ne nécessite pas la présence du fichier source lors de l'exécution. Par conséquent, Go n'a pas d'équivalent à __FILE__.

Solutions alternatives

Bien que Go ne fournisse pas de solution directe, il existe des approches alternatives qui peuvent obtenir des fonctionnalités similaires :

  • runtime.Caller() Fonction : Cette fonction récupère le nom de fichier (y compris le chemin) de la fonction appelante au moment de la compilation. Vous pouvez utiliser ces informations pour déduire le répertoire où se trouve le fichier source et ouvrir un fichier relatif à ce répertoire.
  • Détermination du répertoire de travail : À l'aide de la fonction filepath.Abs(), vous pouvez déterminer le chemin absolu du répertoire de travail avant d'ouvrir les fichiers pour spécifier le chemin relatif en conséquence.

Comprendre le besoin

Pour fournir une solution plus personnalisée , il est crucial de comprendre pourquoi vous avez besoin de cette fonctionnalité. Partager votre contexte spécifique nous permettrait de vous orienter vers l’approche la plus adaptée à votre situation.

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