为此,您将需要gorm和go.uuid


go get github.com/jinzhu/gorm


go get github.com/satori/go.uuid

尝试创建您自己的模型基础模型,而不是gorm.Model像这样:


type Base struct {

 ID         string     `sql:"type:uuid;primary_key;default:uuid_generate_v4()"`

 CreatedAt  time.Time  `json:"created_at"`

 UpdatedAt  time.Time  `json:"updated_at"`

 DeletedAt  *time.Time `sql:"index" json:"deleted_at"`

}

然后,您将使用在创建任何记录之前调用的方法填充此字段,如下所示:


func (base *Base) BeforeCreate(scope *gorm.Scope) error {

 id, err := uuid.NewV4()

 if err != nil {

   return err

 }

 return scope.SetColumn("ID", uuid.String())

}

因此,对于您的特定情况,您将拥有:


type User struct {

    Base

    FirstName string `form:"first_name" json:"first_name,omitempty"`

    LastName  string `form:"last_name" json:"last_name,omitempty"`

    Password  string `form:"password" json:"password" bindind:"required"`

    Email     string `gorm:"type:varchar(110);unique_index" form:"email" json:"email,omitempty" binding:"required"`

    Location  string `form:"location" json:"location,omitempty"`

    Avatar    string `form:"avatar" json:"avatar,omitempty"`

    BgImg     string `form:"bg_img" json:"bg_img,omitempty"`

}

可以在此处找到有关此的更多详细信息