Soru Golang arkadan kaçış nasıl


MySQL, gölgelenen sözcüklerin geri işaretleneceği tabloları gerektirir. Ayrılmış bir sözcük olan bir masa rolüm var, ama ben çoktan satırları yazabilirim (bu bir oyuncak sorgu, büyük olanlar bir satıra sığmaz ...).

Arka kenelerden nasıl kurtulurum?

İşte kodum:

dbmap := db.InitDb()

var roles []entities.Role
query :=
    ` << Difficult to see with SO's code editor widget, but here is a back tick
SELECT *
FROM `Role` <<< Needs escaping
`  << Difficult to see, but here is a back tick

_, err := dbmap.Select(&roles, query, nil)
if err != nil {
    panic(err)
}

fmt.Println(roles)

25
2018-01-18 01:36


Menşei




Cevaplar:


Backtick'lerin içindeki backtick'lerden kaçamazsınız, ancak şunları yapabilirsiniz:

dbmap := db.InitDb()

var roles []entities.Role
query := `
SELECT *
FROM ` + "`Role`"

_, err := dbmap.Select(&roles, query, nil)
if err != nil {
    panic(err)
}

fmt.Println(roles)

38
2018-01-18 01:47





Sorgunuz uzunsa, bir metin dosyasına koyup okumaya değer olabilir, bu da kodunuzu daha özlü ve düzenli tutacak ve ayrıca backtick alıntılama sorununu tamamen ortadan kaldıracaktır.


8
2018-01-18 01:49



Tam olarak ne zaman ağır gidiyorsa, Navicat gibi bir araç kullanabilir ve sözdizimi vurgulama ve otomatik tamamlama vb. - Lee
Mükemmel fikir, dosyayı kendi kendini açıklayıcı bir şekilde de adlandırabilirsiniz. - tlehman
Ancak dosyayı bayt dizisi olarak okurken dikkatli olun, daha sonra bayt sırası işaretini içerebilir. - Stefan Steiger
Bunun yanı sıra, bu sizin sql dosyasını da beraberinde getirmeyi hatırlamanız gerektiğinden, ikilinizin daha az taşınabilir olduğunu düşünürdüm. - donatJ


Şunun gibi sorguları yazmayı deneyebilirsiniz:

query :=fmt.Sprintf("SELECT * FROM `Role`")

Çıktıları karşılaştırabilirsiniz:

import "fmt"

func main() {
 query :=fmt.Sprintf("SELECT * FROM `Role`")
 fmt.Println(query)
 fmt.Println( `SELECT * FROM ` + "`Role`") }

3
2018-05-17 07:12





Kullanabilirsiniz . önek:

query := `
SELECT *
FROM .Role
`

3
2017-07-20 11:55