我有一个字符串,我需要成为只读文件指针(*os.File
)。我无法使用strings.NewReader
,因为该函数只接受*os.File
。这可能吗?
我意识到我可以将字符串直接写入文件,然后再次打开它。但我想避免这一步。
答案 0 :(得分:4)
简短的回答是,你做不到。出于这个原因,通常不建议在Go中编写带有os.File的函数,除非你实际上是在进行手动系统调用或其它需要os.File的函数。相反,您的函数应该接受io.Reader或其他接口(可能包含io.Seeker),具体取决于所需的内容。
如果你可以修改需要os.File的地方,这是你最好的选择。如果你不能,它真的只需要一个读者,你可以使用os.Pipe。
有了更多背景信息,我或许可以提供更好的推荐。
答案 1 :(得分:1)
您无法从字符串创建*os.File
。如果您不能使用io.Reader
,最好的办法是将字符串写入临时文件,然后使用os.Open
获取*os.File
。