没有参数的函数没有足够的参数

时间:2018-10-11 11:53:48

标签: go

我是GO的新手,所以我想尝试一个小的应用程序来帮助我管理一些旅行。我正在遵循此处找到的设计:sohamkamani.com

我遇到了一些对我来说没有意义的错误...

src/trip-manager/handlers/PersonHandlers.go:14:40: not enough arguments in call to method expression stores.PersonStore.FindAll
        have ()
        want (stores.PersonStore)

我的函数不需要参数吗?我在这里想念什么?

此外,在将所有内容拆分成包并引入第二家商店之前,我没有遇到这个错误。但是因为我是个白痴,所以我当时并没有提交要还原的内容,而是找出我做错了什么。希望这里有人可以发现我的错误?

handlers / PersonH​​andlers.go:14

var people, err = PersonStore.FindAll()

商店/PersonStore.go

type PersonStore interface {
  FindAll() ([]*Person, error)
}

type DbPersonStore struct {
  Db *sql.DB
}

var personStore PersonStore

func (personStore *DbPersonStore) FindAll() ([]*Person, error) {
  ...
}

func InitPersonStore(s PersonStore) {
  personStore = s
}

最后: main.go

func main() {
  fmt.Println("Hello, world. Listening on port 3000")

  router := NewRouter()

  psqlInfo := fmt.Sprintf(
    "host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
    cred.Host, cred.Port, cred.User, cred.Password, cred.Database,
  )

  var db, err = sql.Open("postgres", psqlInfo)

  if err != nil {
    panic(err)
  }

  InitPersonStore(&DbPersonStore{Db: db})

  log.Fatal(http.ListenAndServe(":3000", router))
}

2 个答案:

答案 0 :(得分:1)

arrayOfObjects.sort((a, b) => b.get('date').format('DD.MM.YYYY') - a.get('date').format('DD.MM.YYYY'))

您正在做的是在接口而不是实例上调用handlers/PersonHandlers.go:14 var people, err = PersonStore.FindAll() 。 您可能输入了小写字母

FindAll()

https://play.golang.org/p/nBc6tomURoa

答案 1 :(得分:0)

PersonStore.FindAll()的问题在于PersonStore是接口 而且您无法运行接口方法,则必须调用struct实例方法,例如

personStore := DbPersonStore{Db: db}
personStore.FindAll()