2015-05-17 21 views
7
Bir dilim gelen Sabit boyutlu bir dizi dönüştürmek istediğiniz

:Go-lang: Dilim, sabit boyut dizisine nasıl dönüştürülür?

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

Ama bu sonuçlanır:

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

Nasıl Sabit boyutlu diziye bir dilim dönüştürmek için?

+1

Olası kopyası [In golang'da bir dilim nasıl dizilime dönüştürülür] (http://stackoverflow.com/questions/19073769/in-golang-how-do-you-convert-a-slice-into- bir dizi) – twinj

cevap

19

Sen copy kullanmak gerekir: Aedolon belirttiği gibi

slice := []byte("abcdefgh") 

var arr [4]byte 

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

fmt.Println(arr) 

ayrıca sadece her zaman yalnızca len(src) ve len(dst) bayt minimum kopyalar kopya olarak

copy(arr[:], slice) 

kullanabilirsiniz.

+2

Bu doğru, ancak küçük bir ekleme: 'Kopyala (arr [:], dilim [: 4])' '' '' '' 'nı (arr [:], dilim)' yeterli. 'copy', otomatik olarak verilen dilimlerin daha küçük olanına sınırlar. – Aedolon

+0

@Aedolon İpucu için teşekkürler, cevabı ekledi. – inf