2015-05-17 4 views
7

मैं एक टुकड़ा से एक निश्चित आकार सरणी कनवर्ट करना चाहते हैं:गो-लैंग: स्लाइस को निश्चित आकार सरणी में कैसे परिवर्तित करें?

func gen(bricks []Brick) { 
    if len(bricks) == 16 { 
     if check(Sculpture{bricks}) { 
      var b [16]Brick = bricks[0:16]; 
     } 
    } 
} 

लेकिन इस में जो परिणाम:

cannot use bricks[0:16] (type []Brick) as type [16]Brick in assignment 

कैसे एक निश्चित आकार सरणी में एक टुकड़ा कन्वर्ट करने के लिए?

+1

संभावित गोप्लिकेट [गोलांग में आप स्लाइस को सरणी में कैसे परिवर्तित करते हैं] (http://stackoverflow.com/questions/19073769/in-golang-how-do-you-convert-a-slice-into- ए-सरणी) – twinj

उत्तर

19

आप copy उपयोग करने की आवश्यकता:

slice := []byte("abcdefgh") 

var arr [4]byte 

copy(arr[:], slice[:4]) 

fmt.Println(arr) 

Aedolon नोटों के रूप में आप भी सिर्फ उपयोग कर सकते हैं

copy(arr[:], slice) 
प्रति हमेशा ही len(src) और len(dst) बाइट्स की न्यूनतम कॉपी के रूप में

+2

यह सही है, लेकिन एक छोटा सा अतिरिक्त: आपको 'कॉपी (एआर [:], स्लाइस [: 4]) की आवश्यकता नहीं है,' प्रतिलिपि (एआर [:], टुकड़ा) 'पर्याप्त है। 'प्रतिलिपि' स्वचालित रूप से दिए गए स्लाइस के छोटे से सीमित हो जाती है। – Aedolon

+0

@ एडोलन संकेत के लिए धन्यवाद, इसे उत्तर में जोड़ा गया। – inf

संबंधित मुद्दे