2017-05-28 13 views
1

Die folgenden Codefehler mit Index außerhalb des gültigen Bereichs. Ich habe versucht, main zu pic.Show (Pic (500, 500)) zu ändern, aber das ändert das Argument von der Funktion zum Rückgabetyp und es kompiliert nicht. Wie gebe ich Ganzzahlen weiter, wenn das Bild eine Funktion als Argument erwartet.Gehen Tour # 18. Wie gebe ich Ganzzahlen an Pic weiter?

package main 

import "golang.org/x/tour/pic" 

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

    mypic := [][]uint8{} 
    for y := 0; y < dy; y++ { 
     mypic[y] = []uint8{} 
     for x := 0; x < dx; x++ { 
      mypic[y][x] = uint8((x + y)/2) 
     } 
    } 
    return mypic 
} 

func main() { 
    pic.Show(Pic) 
} 

Antwort

1

Sie nicht. Das Go-Tour-Programm übergibt Pic Testwerte an Ihr Programm. Ihr Problem ist in Ihrem Code: panic: runtime error: index out of range. [][]uint8{} und []uint8{} zuteilen Null y und Null x Scheibe Elemente. Verwenden Sie make, um Ihre y und x Scheiben zuzuweisen. Zum Beispiel

package main 

import "golang.org/x/tour/pic" 

func Pic(dx, dy int) [][]uint8 { 
    pixels := make([][]uint8, dy) 
    for y := 0; y < dy; y++ { 
     pixels[y] = make([]uint8, dx) 
     for x := 0; x < dx; x++ { 
      pixels[y][x] = uint8((x + y)/2) 
     } 
    } 
    return pixels 
} 

func main() { 
    pic.Show(Pic) 
} 

Referenz: Making slices, maps and channels, The Go Programming Language Specification

Verwandte Themen