关于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)
}
}
mod.go文件得有