登录
首页 >  Golang >  Go问答

使用管道将标准输出传输到文件并格式化

来源:stackoverflow

时间:2024-03-03 14:12:23 495浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《使用管道将标准输出传输到文件并格式化》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

gogenerate 可以将 stdout 从 go run 传输到 gofmt 并最终传输到文件的语法是什么?下面是我尝试过的简单示例。它位于文件 main.go 中。搜索后我找不到任何这样的例子。谢谢。

编辑:最终我想使用 gogenerate 并让它写入一个格式化文件。

//go:generate go run main.go | go fmt > foo.go
package main

import "fmt"

const content = `
package main
func     foo() string {return "Foo"}
`

func main() {
    fmt.Print(content)
}

解决方案


直接使用format package而不是运行shell:

//go:generate go run main.go
package main

import (
    "go/format"
    "io/ioutil"
    "log"
)

const content = `
package main
func     foo() string {return "Foo"}
`

func main() {
    formattedContent, err := format.Source([]byte(content))
    if err != nil {
        log.Fatal(err)
    }
    err = ioutil.WriteFile("foo.go", formattedContent, 0666)
    if err != nil {
        log.Fatal(err)
    }
}

避免使用像 bash 这样的 shell,因为该 shell 可能无法在运行 go 工具的所有系统上使用。

今天关于《使用管道将标准输出传输到文件并格式化》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>