2011-12-09 8 views
6

En mi código Go, quiero hacer una matriz de tipo de datos personalizados. Me llamoGoogle Go error - "no puedo hacer tipo"

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

y me sale error:

cannot make type *BlockData 

mi clase BlockData contiene tipos de campos tales como uint64, Int64, float32, cuerda, [] bytes, string [] y [] * TransactionData. El último es una matriz de punteros a otra clase personalizada de la mía.

¿Qué debo hacer para corregir este error?

Respuesta

10

make() se utiliza para crear divisiones, mapas y canales. El nombre del tipo debe tener [] antes de hacerlo al hacer un corte.

Utilice esto para hacer una rebanada de punteros a BlockData.

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

Más información en Go language specification.

1

Making slices, maps and channels

Por ejemplo,

package main 

import "fmt" 

type BlockData struct{} 

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

de salida:

4 [<nil> <nil> <nil> <nil>] 
Cuestiones relacionadas