例如,Ruby中有一个-c选项,在运行代码之前判断语法:

C:\>ruby --help
Usage: ruby [switches] [--] [programfile] [arguments]
-c              check syntax only

C:\>ruby -c C:\foo\ruby\my_source_code.rb
Syntax OK

Go中有没有类似的功能?

另外,Ruby的一个例子只是因为我在Ruby中了解它.不是因为玩拖拉之类的.

推荐答案

您可以使用gofmt判断语法错误,而无需实际构建项目.

gofmt -e my_file.go > /dev/null

以后可以使用$?bash变量,返回代码0表示成功,2表示语法判断/dev/null将吃掉代码,但错误将转到stderr

-e选项定义为:

报告所有错误(不只是不同行上的前10个错误)


gofmt --help

usage: gofmt [flags] [path ...]
  -comments=true: print comments
  -cpuprofile="": write cpu profile to this file
  -d=false: display diffs instead of rewriting files
  -e=false: 报告所有错误(不只是不同行上的前10个错误)
  -l=false: list files whose formatting differs from gofmt's
  -r="": rewrite rule (e.g., 'a[b:len(a)] -> a[b:]')
  -s=false: simplify code
  -tabs=true: indent with tabs
  -tabwidth=8: tab width
  -w=false: write result to (source) file instead of stdout

Go相关问答推荐

Go:嵌入类型不能是类型参数""

在保留额外参数的同时解封YAML

[0]Func()as";请勿比较哨兵类型

由于索引器压缩比限制,扫描包含golang包的图像时,伪影XRAY失败

验证访问令牌(密钥罩)

关于如何使用 Service Weaver 设置多个不同侦听器的问题

将这两个函数合二为一的惯用方法

通过 Terraform 中的 MapNestedAtribute 进行迭代

GORM中是否可能自动迁移具有循环关系的表?

为什么我只收到部分错误而不是我启动的 goroutines 的所有错误?

Golang 网络应用程序安全性:您是否应该判断输入是否为有效的 utf-8?

Go 中的 HTTP 请求验证中间件

go:embed 文件扩展名模式

为什么此代码在运行命令 error="exec: not started" 时出现错误?

将 Golang Gin 与 AWS Lambda 和无服务器与代理路径一起使用

Unescape 在 rss 中两次逃脱了标题

实现接口的指针的泛型类型是什么?

具有多个嵌入式 struct 的 Go MarshalJSON 行为

Go模板中的浮点除法

获取单调时间,同 CLOCK_MONOTONIC