Пытаюсь сделать generic репозиторий.
При вызове метода NewRepository он возвращает необходимый тип, то есть Repository[User]
Далее при вызове метода Get, Golang так же возвращает необходимый тип и при обращении к переменной user в методе Run,  GoLand определяет этот тип как *T и ругается на несуществующие поля этой переменной.  А вроде должен определять как User.
Но если скомпилировать код - он работает.
Есть какой-то обходной путь или решение, как заставить GoLand определить тип?
Пример кода:
type Group struct {
	gorm.Model
	Name string
}
type User struct {
    gorm.Model
    ID        int   
    UserName  string
    FirstName string
    LastName  string
    Email     string
}
type ModelsInterface interface {
	User | Group
}
type Repository[T any] struct {
	db *gorm.DB
}
func (r *Repository[T]) Get(id uint) *T {
	var t T
	r.db.Where("id = ?", id).First(&t)
	return &t
}
func NewRepository[T ModelsInterface](db *gorm.DB) *Repository[T] {
	return &Repository[T]{
		db: db,
	}
}
func Run() {
	userRepository := NewRepository[User](model.DB)
	user := userRepository.Get(1)
	fmt.Println(user.FirstName)
}