From adf85d5b82fe8b3a9aa5ad627ee5268cc519ab4f Mon Sep 17 00:00:00 2001 From: Sivchari <55221074+sivchari@users.noreply.github.com> Date: Thu, 4 Mar 2021 20:44:15 +0900 Subject: [PATCH] change the method of initializing slice (#4097) * change the method of initializing slice and fixed the length to be specified as 0 * keep the association.go code in the var group * keep the association.go code in the var group * change to initializing in var group --- callbacks/associations.go | 10 +++++----- callbacks/delete.go | 8 ++++---- callbacks/preload.go | 9 +++++++-- schema/naming.go | 2 +- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/callbacks/associations.go b/callbacks/associations.go index 2deb8ede..10819dcc 100644 --- a/callbacks/associations.go +++ b/callbacks/associations.go @@ -39,7 +39,7 @@ func SaveBeforeAssociations(create bool) func(db *gorm.DB) { switch db.Statement.ReflectValue.Kind() { case reflect.Slice, reflect.Array: var ( - objs []reflect.Value + objs = make([]reflect.Value, 0, db.Statement.ReflectValue.Len()) fieldType = rel.Field.FieldType isPtr = fieldType.Kind() == reflect.Ptr ) @@ -140,7 +140,7 @@ func SaveAfterAssociations(create bool) func(db *gorm.DB) { } if elems.Len() > 0 { - assignmentColumns := []string{} + assignmentColumns := make([]string, 0, len(rel.References)) for _, ref := range rel.References { assignmentColumns = append(assignmentColumns, ref.ForeignKey.DBName) } @@ -154,7 +154,7 @@ func SaveAfterAssociations(create bool) func(db *gorm.DB) { f = f.Addr() } - assignmentColumns := []string{} + assignmentColumns := make([]string, 0, len(rel.References)) for _, ref := range rel.References { if ref.OwnPrimaryKey { fv, _ := ref.PrimaryKey.ValueOf(db.Statement.ReflectValue) @@ -219,7 +219,7 @@ func SaveAfterAssociations(create bool) func(db *gorm.DB) { } if elems.Len() > 0 { - assignmentColumns := []string{} + assignmentColumns := make([]string, 0, len(rel.References)) for _, ref := range rel.References { assignmentColumns = append(assignmentColumns, ref.ForeignKey.DBName) } @@ -324,7 +324,7 @@ func onConflictOption(stmt *gorm.Statement, s *schema.Schema, selectColumns map[ } if len(defaultUpdatingColumns) > 0 { - var columns []clause.Column + columns := make([]clause.Column, 0, len(s.PrimaryFieldDBNames)) for _, dbName := range s.PrimaryFieldDBNames { columns = append(columns, clause.Column{Name: dbName}) } diff --git a/callbacks/delete.go b/callbacks/delete.go index 128722a1..64dd7236 100644 --- a/callbacks/delete.go +++ b/callbacks/delete.go @@ -41,7 +41,7 @@ func DeleteBeforeAssociations(db *gorm.DB) { } if len(db.Statement.Selects) > 0 { - var selects []string + selects := make([]string, 0, len(db.Statement.Selects)) for _, s := range db.Statement.Selects { if s == clause.Associations { selects = append(selects, s) @@ -69,9 +69,9 @@ func DeleteBeforeAssociations(db *gorm.DB) { } case schema.Many2Many: var ( - queryConds []clause.Expression - foreignFields []*schema.Field - relForeignKeys []string + queryConds = make([]clause.Expression, 0, len(rel.References)) + foreignFields = make([]*schema.Field, 0, len(rel.References)) + relForeignKeys = make([]string, 0, len(rel.References)) modelValue = reflect.New(rel.JoinTable.ModelType).Interface() table = rel.JoinTable.Table tx = db.Session(&gorm.Session{NewDB: true}).Model(modelValue).Table(table) diff --git a/callbacks/preload.go b/callbacks/preload.go index 27e3c3dd..eafd407d 100644 --- a/callbacks/preload.go +++ b/callbacks/preload.go @@ -27,8 +27,13 @@ func preload(db *gorm.DB, rel *schema.Relationship, conds []interface{}, preload }) if rel.JoinTable != nil { - var joinForeignFields, joinRelForeignFields []*schema.Field - var joinForeignKeys []string + + var ( + joinForeignFields = make([]*schema.Field, 0, len(rel.References)) + joinRelForeignFields = make([]*schema.Field, 0, len(rel.References)) + joinForeignKeys = make([]string, 0, len(rel.References)) + ) + for _, ref := range rel.References { if ref.OwnPrimaryKey { joinForeignKeys = append(joinForeignKeys, ref.ForeignKey.DBName) diff --git a/schema/naming.go b/schema/naming.go index e10c9212..0643d1bd 100644 --- a/schema/naming.go +++ b/schema/naming.go @@ -92,7 +92,7 @@ var ( ) func init() { - var commonInitialismsForReplacer []string + commonInitialismsForReplacer := make([]string, 0, len(commonInitialisms)) for _, initialism := range commonInitialisms { commonInitialismsForReplacer = append(commonInitialismsForReplacer, initialism, strings.Title(strings.ToLower(initialism))) }