«нерешить ошибки ссылок» в golang - PullRequest
0 голосов
/ 10 января 2020

Я сейчас работаю над Go Микросервисами с BoltDB. Как устранить «неразрешить ошибки ссылок» в golang?

У меня есть следующий Go код:

// Start seeding accounts
//Funtion Seed Gives me error as the functions which i passed in Seed Functions are not defined even i defined.
func (bc *BoltClient) Seed() {

    initializeBucket()  // <-- this line gives error as it's undefined even i defined.
    seedAccounts()      // <-- this line gives error as it's undefined even i defined.
}

// Creates an "AccountBucket" in our BoltDB. It will overwrite any existing bucket of the same name.
func (bc *BoltClient) initializeBucket() {
    bc.boltDB.Update(func(tx *bolt.Tx) error {
        _, err := tx.CreateBucket([]byte("AccountBucket"))
        if err != nil {
            return fmt.Errorf("create bucket failed: %s", err)
        }
        return nil
    })
}

func (bc *BoltClient) seedAccounts() {

    total := 100
    for i := 0; i < total; i++ {

        //generating key larger than 10000
        key := strconv.Itoa(10000 + i)

        //Creating instance of account structure
        acc := model.Account{
            Id:key,
            Name:"Person_" + strconv.Itoa(i),
        }

        //Serializing structure of JSON
        jsonBytes, _ := json.Marshal(acc)

        bc.boltDB.Update(func(tx *bolt.Tx) error {
            b := tx.Bucket([]byte("AccountBucket"))
            err := b.Put([]byte(key), jsonBytes)
            return err
        })
    }
    fmt.Printf("Seeded %v fake accounts...\n", total)
}

Когда я выполняю код, я получаю следующую ошибку:

# _/home/dev46/dev46/code/go_projects/src/callistaenterprise_/goblog/accountservice/dbclient
dbclient/boltclient.go:32:2: undefined: initializeBucket
dbclient/boltclient.go:33:2: undefined: seedAccounts

Что я делаю не так?

1 Ответ

1 голос
/ 10 января 2020

В Go, в отличие от Java или C ++, методы вызываются с явным получателем метода, даже если это тот же получатель, что и текущий:

func (bc *BoltClient) Seed() {    
    bc.initializeBucket()
    bc.seedAccounts()
}
...