package gofakeit import ( "math/rand" "strings" ) // Comment will generate a random statement or remark expressing an opinion, observation, or reaction func Comment() string { return comment(globalFaker.Rand) } // Comment will generate a random statement or remark expressing an opinion, observation, or reaction func (f *Faker) Comment() string { return comment(f.Rand) } func comment(r *rand.Rand) string { structures := [][]string{ {"interjection", "adjective", "noun", "verb", "adverb"}, {"noun", "verb", "preposition", "determiner", "adjective", "noun"}, {"noun", "verb", "adverb"}, {"adjective", "noun", "verb"}, {"noun", "verb", "preposition", "noun"}, } // Randomly select a structure structure := structures[number(r, 0, len(structures)-1)] // Build the sentence var commentParts []string for _, wordType := range structure { switch wordType { case "noun": commentParts = append(commentParts, noun(r)) case "verb": commentParts = append(commentParts, verb(r)) case "adjective": commentParts = append(commentParts, adjective(r)) case "adverb": commentParts = append(commentParts, adverb(r)) case "interjection": commentParts = append(commentParts, interjection(r)) case "preposition": commentParts = append(commentParts, preposition(r)) case "determiner": commentParts = append(commentParts, nounDeterminer(r)) default: // Should never hit panic("Invalid word type") } } // Combine the words into a sentence sentence := strings.Join(commentParts, " ") // Capitalize the first letter sentence = title(sentence) // Add a period to the end of the sentence sentence = sentence + "." return sentence } func addWordCommentLookup() { AddFuncLookup("comment", Info{ Display: "Comment", Category: "word", Description: "Statement or remark expressing an opinion, observation, or reaction", Example: "wow", Output: "string", Generate: func(r *rand.Rand, m *MapParams, info *Info) (any, error) { return interjection(r), nil }, }) }