Goに長い文字列リテラルがあります:
db.Exec("UPDATE mytable SET (I, Have, Lots, Of, Fields) = ('suchalongvalue', 'thisislongaswell', 'ohmansolong', 'wowsolong', 'loooooooooooooooooooooooooong')")
これをより管理しやすくする2つの方法があります。生の引用符、または複数の連結された引用符です。
db.Exec(`UPDATE mytable SET (I, Have, Lots, Of, Fields)
= ('suchalongvalue', 'thisislongaswell', 'ohmansolong',
'wowsolong', 'loooooooooooooooooooooooooong')`)
db.Exec("UPDATE mytable SET (I, Have, Lots, Of, Fields) = " +
"('suchalongvalue', 'thisislongaswell', 'ohmansolong', " +
"'wowsolong', 'loooooooooooooooooooooooooong')")
最初の方が正しいと感じますが、前のスペースが文字列に含まれるため、結果の文字列には厄介なスペースの実行が含まれます。これらのいずれかは慣用的なGoと見なされますか?
そのようなパラメータに長い文字列リテラルを入れるのは奇妙に見えます。を好む:
const updateQuery=`
UPDATE mytable SET (I, Have, Lots, Of, Fields)
= ('suchalongvalue', 'thisislongaswell', 'ohmansolong',
'wowsolong', 'loooooooooooooooooooooooooong')`
func doUpdate(){
db.Exec(updateQuery)
}
また、各行の奇数スペースよりも、最初に1つの改行を使用することをお勧めします。そうすれば、問題が発生した場合にstrings.Trim
で強制終了できます。
これが私がすることです:
q := `UPDATE mytable SET (I, Have, Lots, Of, Fields) = ` +
`('suchalongvalue', ` +
`'thisislongaswell', ` +
`'wowsolong', ` +
`loooooooooooooooooooooooooong')`
db.Exec(q)
かなりきれいに見えると思います
あなたができること:
s := `UPDATE mytable SET (I, Have, Lots, Of, Fields) = `
s += `('suchalongvalue', `
s += `'thisislongaswell', `
s += `'wowsolong', `
s += `loooooooooooooooooooooooooong')`
db.Exec(s)
私が好む:
var updateStatement = `
UPDATE
mytable
SET
I = 'suchalongvalue'
,Have = 'thisislongaswell'
,Lots = 'ohmansolong'
,Of = 'wowsolong'
,Fields = 'loooooooooooooooooooooooooong'
`
func update(updateStatement string) {
db.Exec(updateStatement)
}
はるかにきれいに見えるはずです。少なくともそれは私に教えられました。