Golang代码格式化指南
Golang代码格式化指南 在使用Go语言时,我发现代码格式化方面有些令人困扰。这里有一个例子,我不得不将所有内容放在同一行,否则就会出现错误。有没有办法实现类似这样的格式?因为有些查询语句非常庞大,试图将它们全部放在一行会显得很不合理。
if queryuser, err = db.Prepare("select UserID, CurrentDB, DBHost
from optUsers
where LoginHash = ?"); err != nil {
println(err)
panic( "queryuser Statement failed to create" )
}
错误提示:supportservice.go:54:67: 字符串中包含换行符
由于最终会有大量类似结构的语句,我希望能尽量保持代码整洁。有没有更好的方法?
更多关于Golang代码格式化指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
使用原始字符串(用反引号包围:`),它允许换行。
`I am
a
raw string`
在Go语言中,字符串字面量不能直接包含换行符,这是导致你遇到编译错误的原因。不过,有几种更好的方法可以处理长SQL查询语句,保持代码整洁。
方法1:使用反引号创建原始字符串字面量
if queryuser, err = db.Prepare(`select UserID, CurrentDB, DBHost
from optUsers
where LoginHash = ?`); err != nil {
println(err)
panic("queryuser Statement failed to create")
}
方法2:使用加号连接多行字符串
if queryuser, err = db.Prepare("select UserID, CurrentDB, DBHost " +
"from optUsers " +
"where LoginHash = ?"); err != nil {
println(err)
panic("queryuser Statement failed to create")
}
方法3:将查询定义为常量或变量
const userQuery = `
SELECT UserID, CurrentDB, DBHost
FROM optUsers
WHERE LoginHash = ?
`
if queryuser, err = db.Prepare(userQuery); err != nil {
println(err)
panic("queryuser Statement failed to create")
}
方法4:使用fmt.Sprintf构建复杂查询
query := fmt.Sprintf(`
SELECT %s
FROM %s
WHERE LoginHash = ?
`, "UserID, CurrentDB, DBHost", "optUsers")
if queryuser, err = db.Prepare(query); err != nil {
println(err)
panic("queryuser Statement failed to create")
}
推荐的最佳实践
对于大量SQL语句,建议使用方法3,将所有查询集中定义:
const (
userQuery = `
SELECT UserID, CurrentDB, DBHost
FROM optUsers
WHERE LoginHash = ?
`
otherQuery = `
SELECT *
FROM anotherTable
WHERE condition = ?
`
)
// 使用时直接引用
if queryuser, err = db.Prepare(userQuery); err != nil {
println(err)
panic("queryuser Statement failed to create")
}
反引号创建的原始字符串字面量是最常用的方法,因为它允许字符串跨越多行,并且不需要转义特殊字符。

