duanbipu7601 2017-10-01 20:53
浏览 71
已采纳

http函数Golang的附加参数

I am trying to pass string to handler in given example.

package main
import (
"fmt"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
     fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
     http.HandleFunc("/", handler)
     http.ListenAndServe(":8080", nil)
}

Here is what i tried but it throws an error as it expects regular number of arguments:

package main
import (
"fmt"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request, s *string) {
     fmt.Fprintf(w, "Hi there, I love %s!", *s)
}

func main() {
     files := "bar"
     http.HandleFunc("/", handler(&files))
     http.ListenAndServe(":8080", nil)
}
  • 写回答

3条回答 默认 最新

  • douyouqian8550 2017-10-01 21:19
    关注

    I'm a little unclear on what you're trying to do, but based off what you said, why not try to encapsulate the data you want to pass in like this:

    package main
    import (
        "fmt"
        "net/http"
    )
    
    type FilesHandler struct {
        Files string
    }
    
    func (fh *FilesHandler) handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hi there, I love %s!", fh.Files)
    }
    
    func main() {
        myFilesHandler := &FilesHandler{Files: "bar"}
        http.HandleFunc("/", myFilesHandler.handler)
        http.ListenAndServe(":8080", nil)
    }
    

    This provides a little more granular control of what you make available to your Handler.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效