将参数传递给HandlerFunc

我正在尝试使用svgo包在svg文件上绘制点并使用网络浏览器显示该点。通过查看net/http文档,我不知道如何将参数传递到svgWeb函数中。


下面的示例编译并在我的Web浏览器中显示一个三角形和一条线,但是我真正想做的是使用Polyline方法绘制xpt和ypt。如何传递适当的参数或重组此示例以完成该任务?


package main


import (

    "github.com/ajstarks/svgo"

    "log"

    "net/http"

)


func svgWeb(w http.ResponseWriter, req *http.Request) {

    w.Header().Set("Content-Type", "image/svg+xml")


    xpts := []int{1, 200, 5}

    ypts := []int{200, 400, 300}

    s := svg.New(w)

    s.Start(500, 500)

    s.Line(5, 10, 400, 400, "stroke:black")

    s.Polyline(xpts, ypts, "stroke:black")

    s.End()

}


//// Main Program function

//////////////////////////////


func main() {


    xpts := []int{}

    ypts := []int{}


    for i := 0; i < 100; i++ {

        xpts = append(xpts, i)

        xpts = append(ypts, i+5)

    }


    http.Handle("/economy", http.HandlerFunc(svgWeb))

    err := http.ListenAndServe(":2003", nil)

    if err != nil {

        log.Fatal("ListenAndServe:", err)

    }

}


弑天下
浏览 269回答 2
2回答

凤凰求蛊

您应该在内部将函数定义main为匿名函数。这样,它可以引用局部变量xpts和ypts(该函数将是一个闭包)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go