2011-12-09 13 views
6

मेरे गो कोड में मैं कस्टम डेटा प्रकार की एक सरणी बनाना चाहता हूं। मैंGoogle गो त्रुटि - "टाइप नहीं कर सकता"

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

संपर्क करें, मैं त्रुटि मिलती है:

cannot make type *BlockData 

मेरी कक्षा BlockData uint64, int64, float32, स्ट्रिंग के रूप में इस तरह के फ़ील्ड प्रकार, [] बाइट, [] स्ट्रिंग है और [] * TransactionData। आखिरी एक मेरी दूसरी कस्टम कक्षा में पॉइंटर्स की एक सरणी है।

इस त्रुटि को ठीक करने के लिए मुझे क्या करना चाहिए?

उत्तर

10

make() स्लाइस, मानचित्र और चैनल बनाने के लिए उपयोग किया जाता है। स्लाइस बनाते समय टाइप नाम में [] होना चाहिए।

इसका उपयोग ब्लॉकडाटा को पॉइंटर्स का टुकड़ा बनाने के लिए करें।

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>] 
संबंधित मुद्दे