2016-01-21 50 views
1

我想用Go試試圖形庫。我發現了下面的例子:轉至:undefined class

package main 

import (
    "image" 
    "image/color" 
    "image/png" 
    "log" 
    "os" 
) 

func main() { 
    width, height := 512, 512 
    canvas := NewCanvas(image.Rect(0, 0, width, height)) 
    canvas.DrawGradient() 

    // Draw a series of lines from the top left corner to the bottom of the image 
    for x := 0; x < width; x += 8 { 
     canvas.DrawLine(color.RGBA{0, 0, 0, 255}, 
      Vector{0.0, 0.0}, 
      Vector{float64(x), float64(height)}) 
    } 

    outFilename := "lines.png" 
    outFile, err := os.Create(outFilename) 
    if err != nil { 
     log.Fatal(err) 
    } 
    defer outFile.Close() 
    log.Print("Saving image to: ", outFilename) 
    png.Encode(outFile, canvas) 
} 

但是,當建設似乎有些類缺失。

D:\go\work>go build draw.go 
# command-line-arguments 
.\draw.go:13: undefined: NewCanvas 
.\draw.go:19: undefined: Vector 
.\draw.go:20: undefined: Vector 

我的環境在HelloWorld示例中運行正常,但是在導入圖像庫時似乎缺少某些東西。任何幫助開始一個新手?

+0

從哪裏找到這個例子?我從某個網頁假設......沒有解釋爲了使用'NewCanvas'函數和'Vector'類型你需要安裝和導入哪些軟件包? – ain

回答

1

您需要將每個.go文件包含在它們的依賴順序中。

嘗試運行的主要文件中的順序假設你正在使用這個庫:https://github.com/felixpalmer/go_images

go run draw.go canvas.go vector.go 
+0

感謝它的工作。 (雖然我期望看到一些用戶界面,但這與問題無關)。 – Frank70

+0

@ Frank70,儘管這一點你應該使用'go build'和/或'go install'。當你有超過1個文件並且包含的​​順序很重要時,沒有理由使用'go run'。 – JimB

1

你錯過NewCanvas功能,並從同一個包Vector結構,你發現的例子。我相信你發現它here。 您可以運行go get https://github.com/felixpalmer/go_images並添加缺少的導入。

+0

感謝您的回覆。自從我剛剛進入SO後,我無法提升您的回覆 – Frank70