我正在Go中编写Web应用程序并使用Neo4j数据库来存储数据。作为Go的Neo4j api,我选择neoism。
但是,请查看以下代码段。
db, _ := neoism.Connect("http://localhost:7474/db/data")
// Create a node with a Cypher quer
// Issue a query
//
res1 := []struct {
A string `json:"n.email"`
}{}
cq1 := neoism.CypherQuery{
//Use backticks for long statements - Cypher is whitespace indifferent
Statement: `
MATCH (n:Account {email: {email}})
RETURN n.email
`,
Parameters: neoism.Props{"email": "hans@ueli.com"},
Result: &res1,
}
db.Cypher(&cq1)
fmt.Println(res1)
我在这里查询来自节点Account的数据并获得结果返回,一切正常。 第二个代码几乎相同,但我在这里直接创建(变量res2)一个指针切片。
// Validate, if email already available in db
res2 := []*struct {
A string `json:"n.email"`
}{}
cq := &neoism.CypherQuery{
Statement: `
MATCH (n:Account {email: {email}})
RETURN n.email
`,
Parameters: neoism.Props{"email": "hans@ueli.com"},
Result: res2,
}
db.Cypher(cq)
fmt.Println(res2)
它们之间的区别在于,第一个样本得到的结果是第二个,但第二个没有结果 结果:
[{hans@ueli.com}]
[]
指针res2在这里有什么问题?
答案 0 :(得分:2)
来自新社论文件:
结果必须是指向一片结构的指针 - 例如&安培; [] someStruct {}
没有关于结构指针切片的说法,所以我假设你的切片是空的,因为函数不期望指针,所以它不能在切片中放任何东西。
当给sqlx.Query
错误的切片类型时,我遇到了相同的行为。第一次缺乏错误是非常令人沮丧的,但很快就会变成反射。