Ошибка Google Go - "невозможно сделать тип" - PullRequest
9 голосов
/ 09 декабря 2011

В своем коде Go я хочу создать массив пользовательских типов данных. Я звоню

Blocks=make(*BlockData, len(blocks))

и я получаю ошибку:

cannot make type *BlockData

Мой класс BlockData содержит такие типы полей, как uint64, int64, float32, string, [] byte, [] string и [] * TransactionData. Последний представляет собой массив указателей на другой мой собственный класс.

Что мне сделать, чтобы исправить эту ошибку?

Ответы [ 2 ]

14 голосов
/ 09 декабря 2011

make() используется для создания фрагментов, карт и каналов. Имя типа должно иметь [] перед ним при создании среза.

Используйте это, чтобы создать указатель на BlockData.

Blocks = make([]*BlockData, len(blocks))

Подробнее в спецификации языка Go .

1 голос
/ 09 декабря 2011

Создание фрагментов, карт и каналов

Например,

package main

import "fmt"

type BlockData struct{}

func main() {
    blocks := 4
    Blocks := make([]*BlockData, blocks)
    fmt.Println(len(Blocks), Blocks)
}

Вывод:

4 [<nil> <nil> <nil> <nil>]
...