2016-03-30 17 views
0

değildir: Her x ve y değeri z değerleri ile bir matris doldurmak ve bunu iade etmek gerekiyorduGit dil: Tip XXX Ben bir işlevi yazdım bir ifade

func Pic(dx, dy int) [][]uint8 { 
    type matrix [][]uint8 

    for i := 0; i < dx; i++ { // fills up the matrix with z's in their right places. 
     for j := 0; j < dy; j++ { 
      matrix[i][j] = Z(i,j) 
     } 
    } 

    return matrix 
} 

. Pic işlevine parametreye bağlı olarak matris için farklı boyutlara sahip olmak istediğimden, ben bir satır 2 çiziyorum. Sonra benim için döngülerimde matrisi dolduracağım.

Bu kodu çalıştırırken bir hata alıyorum: matrix[i][j] = Z(i,j) satırı için type matrix is not an expression. Neyi yanlış yapıyorum? Matris [i] [j] bir ifadeye mi değerlendirmelidir? Neden bir şey koymak istediğimde (neden şimdi boş/varolmayan!)?

cevap

3

, kullanıyorum tavsiye ederim yerleşik make fonksiyonu Eğer iç dilim için dış dilim için dx ve dy lengths- istenen biliyorum çünkü. Effective Go'un Two-dimensional slices bölümü, iki boyutlu bir dilim ayırmak için make kullanımına bir örnek verir. Aşağıda, Pic işlevinizin bir örneği verilmiştir.

func Pic(dx, dy int) [][]uint8 { 
    matrix := make([][]uint8, dx) 

    for i := 0; i < dx; i++ { 
     matrix[i] = make([]uint8, dy) 
     for j := 0; j < dy; j++ { 
      matrix[i][j] = Z(i, j) 
     } 
    } 
    return matrix 
} 
+0

Çok yardımcı! Teşekkürler! – Sahand

4

Tür olarak matrix bildiriyorsunuz, ancak değişken olarak kullanıyorsunuz.

deneyin: Eğer var matrix [][]uint8 kullanabilirsiniz ancak

var matrix [][]uint8 
İlgili konular