0

Go lang functions don't support default or optional params, I don't see any clean way of doing it.

here is my sample code:

type generatedTemplateParams struct {
    promptText           string
    templateText         string
    isPromptByHuman      bool
    isTemplateByHuman    bool
    openSourceTemplateID uint
}

func CreateGeneratedTemplate(
    db   *gorm.DB,
    opts generatedTemplateParams,
) (*models.GeneratedTemplate, error) {
    generatedTemplate := &models.GeneratedTemplate{}
    if opts.promptText != "" {
        generatedTemplate.PromptText = &opts.promptText
    }
    if opts.templateText != "" {
        generatedTemplate.TemplateText = &opts.templateText
    }
    if opts.isPromptByHuman != false {
        generatedTemplate.IsPromptByHuman = opts.isPromptByHuman
    }
    if opts.isTemplateByHuman != false {
        generatedTemplate.IsTemplateByHuman = opts.isTemplateByHuman
    }
    if opts.openSourceTemplateID != 0 {
        generatedTemplate.OpenSourceTemplateID = &opts.openSourceTemplateID
    }

    if err := db.Create(generatedTemplate).Error; err != nil {
        return nil, err
    }

    return generatedTemplate, nil
}

There are 5 ifs to handle optional params for a given function, the same issue arises with the default value. How can I write this in clean and better way?

AtiqGauri
  • 1,483
  • 13
  • 26

0 Answers0