устраивают мои модели таким образом:идут: оголённой псевдоним структура не может назначить внутреннюю структуру буквенных
ProjectDir
main.go
модель
- models.go
- Modela
- modelA.go
- modelB
- modelB.go
Я п main.go
: пакет главный
import (
"test.local/projectDir/models"
)
func main() {
modelA := models.ModelA{
FieldA: "xx",
FieldB: models.ModelB{
FiledC: "yy"
} // here will raise a error: cannot use models.ModelB literal (type models.ModelB) as type modelB.ModelB in field value
}
}
В models/models.go
:
package models
import (
"test.local/projectDir/models/modelA"
"test.local/projectDir/models/modelB"
)
type ModelA modelA.ModelA
type ModelB modelB.ModelB
В models/modelA/modelA.go
:
package modelA
import (
"test.local/projectDir/models/modelB"
)
type ModelA struct {
fieldA string
fieldB modelB.ModelB
}
models/modelB/modelB.go
В:
package modelB
type ModelB struct {
fieldC string
}
Как видно из этой ошибки, тип структуры отличается. Есть ли лучший способ организовать модели?
Что именно в сообщении об ошибке не ясно? Обратите внимание, что вы ** не ** псевдоним 'modelB.ModelB' для типа' models.ModelB'. Вы определяете ** новый ** именованный тип. Именованные типы, подобные этому, могут быть преобразованы друг в друга, но (поскольку они являются разными типами), которые не могут быть назначены напрямую. – Volker