2016-01-21 39 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