Maison > développement back-end > Golang > le corps du texte

Structure interne de la classe de fichiers Golang

PHPz
Libérer: 2024-02-08 21:09:08
avant
368 Les gens l'ont consulté

Golang 文件类内部结构

Golang est un langage de programmation hautes performances et évolutif doté de puissantes capacités de traitement de fichiers. Dans Golang, la structure interne de la classe de fichiers est la clé de la mise en œuvre des opérations sur les fichiers. Dans cet article, l'éditeur PHP Xigua présentera la structure interne de la classe de fichiers Golang pour aider les lecteurs à mieux comprendre les principes et les méthodes de traitement des fichiers. Qu'il s'agisse de lire le contenu d'un fichier, d'écrire des données de fichier ou de créer ou supprimer des fichiers, il est très important que les développeurs comprennent la structure interne des classes de fichiers Golang. Regardons de plus près!

Contenu de la question


L'implémentation sous-jacente dans Go's File类如果你看看go/src/os/types.go est :

type File struct {
*file // os specific
}
Copier après la connexion

Pour autant que je sache, ce type est l'intersection de l'API utilisateur publique et de l'implémentation interne qui diffère selon le système d'exploitation. Je ne sais toujours pas comment (ni où) le runtime/compilateur remplace *file pour implémenter un système d'exploitation spécifique. *file 来实现特定的操作系统。


解决方法


在同一个os包中,file定义在file_<os>.go

Solutionfile_unix.go

Dans le même package os, file est défini dans file_<os>.go. file_windows.goPar exemple, pour les systèmes UNIX, nous avons < /a>, contenant

// file is the real representation of *File.
// The extra level of indirection ensures that no clients of os
// can overwrite this data, which could cause the finalizer
// to close the wrong file descriptor.
type file struct {
    pfd         poll.FD
    name        string
    dirinfo     *dirInfo // nil unless directory being read
    nonblock    bool     // whether we set nonblocking mode
    stdoutOrErr bool     // whether this is stdout or stderr
    appendMode  bool     // whether file is opened for appending
}
Copier après la connexion

Voir l'implémentation Windows ici GOOS 作为环境变量覆盖,或更改配置设置。 构建使用 GOOSGOARCH 并查看文件名(除其他外)以选择或忽略特定后缀例如source_windows.go.

La façon dont l'outil de construction sélectionne les fichiers corrects est configurable et suivie dans l'outil 🎜build 🎜. Cela peut être fait via 🎜🎜. 🎜

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!

source:stackoverflow.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!