在Go HTTP服务器中,我正在使用VS Code作为IDE进行维护-每当保存文件时,都会执行gofmt命令,但是我不引入手动对齐,因此引入了可读性。

例如,我将得到如下代码:

subRouter.Handle("/"                    , Foobar.NewAuthHandler(http.HandlerFunc(handleGetNamespaces ))).Methods("GET")
subRouter.Handle("/{namespace}"         , Foobar.NewAuthHandler(http.HandlerFunc(handleGetKeys       ))).Methods("GET")
subRouter.Handle("/{namespace}"         , Foobar.NewAuthHandler(http.HandlerFunc(handleClearNamespace))).Methods("DELETE")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handleGetObject     ))).Methods("GET")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handleTouchObject   ))).Methods("HEAD")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handlePutObject     ))).Methods("PUT")
subRouter.Handle("/{namespace}"         , Foobar.NewAuthHandler(http.HandlerFunc(handlePostObject    ))).Methods("POST")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handleDeleteObject  ))).Methods("DELETE")

...但是gofmt会将其压缩为:
subRouter.Handle("/", Foobar.NewAuthHandler(http.HandlerFunc(handleGetNamespaces))).Methods("GET")
subRouter.Handle("/{namespace}", Foobar.NewAuthHandler(http.HandlerFunc(handleGetKeys))).Methods("GET")
subRouter.Handle("/{namespace}", Foobar.NewAuthHandler(http.HandlerFunc(handleClearNamespace))).Methods("DELETE")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handleGetObject))).Methods("GET")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handleTouchObject))).Methods("HEAD")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handlePutObject))).Methods("PUT")
subRouter.Handle("/{namespace}", Foobar.NewAuthHandler(http.HandlerFunc(handlePostObject))).Methods("POST")
subRouter.Handle("/{namespace}/{objKey}", Foobar.NewAuthHandler(http.HandlerFunc(handleDeleteObject))).Methods("DELETE")

我看不到gofmt的任何规则或选项来关闭此特定格式设置规则。 And documentation is sparse

最佳答案

有趣的是,它确实以这种方式映射了格式:

m := map[string]http.HandlerFunc{
        "/":            Foobar.NewAuthHandler(http.HandlerFunc(handleGetNamespaces)),
        "/{namespace}": Foobar.NewAuthHandler(http.HandlerFunc(handleGetNamespaces)),
    }

这将是一种以更好的格式显示路线的方法(然后通过map运行并将其添加到路由器)。

另外,如果您希望保留此空间,可以为space eater牺牲星星和斜线:
subRouter.Handle("/" /*             */, Foobar.NewAuthHandler(http.HandlerFunc(handleGetNamespaces))).Methods("GET")
subRouter.Handle("/{namespace}" /*  */, Foobar.NewAuthHandler(http.HandlerFunc(handleGetKeys))).Methods("GET")

或者只是接受与其他所有人相同颜色的自行车棚。

关于go - 如何使用gofmt对齐参数和分配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46940772/

10-09 15:19