当我使用gormigrate编写数据库迁移时,我需要在函数范围内的两个结构之间定义多对多关系。但在 golang 1.19 或 1.18 以下将无法编译
package main
import "fmt"
func main() {
type Student struct {
Courses []*Course
// [Error] ./prog.go:7:14: undefined: Course
}
type Course struct {
Students []*Student
}
fmt.Printf("This won't compile")
}
然而,将定义移到函数之外就可以了
package main
import "fmt"
type Student struct {
Courses []*Course
}
type Course struct {
Students []*Student
}
func main() {
fmt.Printf("This works")
}
可以在https://go.dev/play/p/GI53hhlUTbk上自己尝试
为什么会这样?我怎样才能让它在功能范围内工作?
有没有类似C++中typedef的语法,可以先声明一个struct,再定义?
侃侃尔雅
相关分类