Создаете новый магазин квадроциклов с помощью go(cayley)?

Я новичок и пытаюсь создать хранилище Quad, используя библиотеку cayley/graph (NewQuadStore()). Я пытаюсь сделать это в файле testdata.nq, который представляет собой образец данных, поставляемый с cayley. Вот мой код:

package main

import (
  "fmt"
  "github.com/google/cayley/graph"
  "log"
)

func main() {

var register graph.QuadStoreRegistration
graph.RegisterQuadStore("testdata", register)

store, err := graph.NewQuadStore("testdata", "data/testdata.nq", nil)
if err != nil {
    log.Fatalln(err)
}
defer store.Close()
store.Type()

iterator := store.NodesAllIterator()
for iterator.NextPath() {
    fmt.Println(store.NameOf(iterator.Result()))
}
}

Он компилируется без ошибок, но при запуске вызывает панику. Это выглядит так: -

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x47045e]

goroutine 1 [running]:
panic(0x5dbfa0, 0xc82000a120)
/usr/local/go/src/runtime/panic.go:464 +0x3e6
github.com/google/cayley/graph.NewQuadStore(0x625c60, 0x8, 0x642500,   0x10, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/himanshi/dev/go/src/github.com/google/cayley/graph/quadstore.go:179 +0x23e
main.main()
/home/himanshi/dev/go/src/cayley/main.go:14 +0xcd

Я попытался заглянуть внутрь quadstore.go, чтобы найти проблему, но не смог ее понять и не нашел ничего на godoc. Пожалуйста помоги. Спасибо!


person Himanshi Sharma    schedule 18.03.2016    source источник


Ответы (1)


var register graph.QuadStoreRegistration

Это создает структуру с нулевыми значениями. register.NewFunc равно нулю. graph.NewQuadStore пытается позвонить.

Вы должны инициализировать register каким-то NewFunc, например. https://github.com/google/cayley/blob/master/graph/mongo/quadstore.go#L37

person user1431317    schedule 18.03.2016