2011-12-09 4 views
6

私のGoコードでは、カスタムデータ型の配列を作成したいと考えています。私はGoogle Goエラー - 「タイプできない」

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

を呼び出すと、私はエラーを取得する:

cannot make type *BlockData 

私のクラスてBlockDataはuint64型、Int64型、のfloat32、文字列、[]バイト、[]文字列と[] * TransactionDataようなフィールドタイプが含まれています。最後のものは、私の別のカスタムクラスへのポインタの配列です。

このエラーを修正するにはどうすればよいですか?

答えて

10

make()は、スライス、マップ、およびチャネルを作成するために使用されます。スライスを作成する前に、タイプ名の前に[]が必要です。

これを使用して、BlockDataへのポインタのスライスを作成します。

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

続きを読むGo language specification。例えば

1

Making slices, maps and channels

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>] 
関連する問題