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?