关于go调用其他包函数的疑问

  • 代码都放在 main.go 里 太乱了,于是就想着把一些函数整理放入相应的包里调用,但是这里有个问题一直困扰着。

    Code:

    package main
    import (
      "fmt"
      "github.com/gin-gonic/gin"
      "gorm.io/driver/mysql"
      "gorm.io/gorm"
    )
    var db *gorm.DB 
    var err error
    type Person struct {
      ID   uint   `json:"id`
      Name string `json:"name"`
      Pass string `json:"pass"`
    }
    func main() {
      DSN := "root:passwd@tcp(127.0.0.1:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local"
      db, err = gorm.Open(mysql.Open(DSN), &gorm.Config{}) 
      if err != nil {
          fmt.Println(err)
      }
      db.AutoMigrate(&Person{}) 
      r := gin.Default()
      r.GET("/", GetProjects)
      r.Run(":80")
    }
    func GetProjects(c *gin.Context) {
      var people []Person
      if err := db.Find(&people).Error; err != nil { 
          c.AbortWithStatus(404)
          fmt.Println(err)
      } else {
          c.JSON(200, people)
      }
    }

修改后遇到的疑问

Code:
package main

import (
    "fmt"
    "net/http"
    "test/get"
    "github.com/gin-gonic/gin"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)
var db *gorm.DB 
var err error
type Person struct {
    ID   uint   `json:"id`
    Name string `json:"name"`
    Pass string `json:"pass"`
}
func main() {
    DSN := "root:passwd @tcp(127.0.0.1:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local"
    db, err = gorm.Open(mysql.Open(DSN), &gorm.Config{}) 
    if err != nil {
        fmt.Println(err)
    }
    db.AutoMigrate(&Person{}) 
    r := gin.Default()
    r.GET("/", get.GetProjects)
    r.Run(":80")
}

package get
import (
    "fmt"
    "github.com/gin-gonic/gin"
    "gorm.io/gorm"
)
func GetProjects(db *gorm.DB, c *gin.Context) {
    var people []Person
    if err := db.Find(&people).Error; err != nil { 
        c.AbortWithStatus(404)
        fmt.Println(err)
    } else {
        c.JSON(200, people)
    }
}
为什么不能直接调用外部的函数呢?

关于go调用其他包函数的疑问

本包调用

关于go调用其他包函数的疑问

最佳答案

mod.go文件得有

1年前 评论
Scrooge (楼主) 1年前
deatil (作者) 1年前
讨论数量: 3

mod.go文件得有

1年前 评论
Scrooge (楼主) 1年前
deatil (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!