【问题标题】:package selection error in for a go functiongo 函数中的包选择错误
【发布时间】:2017-10-09 12:38:58
【问题描述】:

我正在从一本书中学习,书上说要添加几行代码,但它会引发错误

package main

import (
   "./lissajous"
   "log"
   "net/http" 
)

func main() {

   handler := func(w http.ResponseWriter, r *http.Request) {
        lissajous(w)
   }
   http.HandleFunc("/", handler) // each request calls handler
   log.Fatal(http.ListenAndServe("localhost:8000", nil))
}

它会抛出这个错误

./server.go:6: imported and not used:
"_/home/zach/Dropbox/Personal/Go_Programming
         /The_Go_Programming_Language/ch01/web/lissajous"
./server.go:14: use of package lissajous without selector

我认为是正确的包目录,但似乎无法调用函数,处理程序的设置就像书中的那样我错过了什么吗?

有任何帮助吗?

【问题讨论】:

  • 是你的书告诉你做那个 import "./lissajous" 吗?好吧,如果是这样的话,不推荐。 golang.org/doc/code.html
  • 这本书并没有说要导入模块,而是添加以下行: handler := func(w http.ResponseWriter, r *http.Request) { lissajous(w) }

标签: go server package


【解决方案1】:

这里有两件事:

  • Go 不允许未使用的导入 - 如果你导入模块,你应该使用它,或者暂时注释掉

  • 推荐另一种自定义模块创建和导入方式。想想一旦你将发布它并将其视为已经发布。为其选择一个唯一的 URL,例如 github.com/login/repo/super-package/package。但是,如果您现在没有义务在开源或私人仓库中发布它。建议在您的系统中保持这样的状态。开始与同事共享它会更容易,如果您愿意,可能会发布。

【讨论】:

  • 我试图添加行handler := func(w http.ResponseWriter, r *http.Request) { lissajous(w) },如果包,我认为在导入时需要该行
猜你喜欢
  • 2013-09-18
  • 1970-01-01
  • 2022-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2018-05-03
相关资源
最近更新 更多