我的程序中有一个生成随机字符串的函数。
func randString(s []rune, l int) string
s
是包含字符串中可能字符的符文片。我通过
在大写和小写字母字符的符文切片中。 l
确定字符串的长度。这非常有效。但我也需要
为html颜色代码生成随机十六进制字符串。
似乎所有消息来源都说重用代码是一种很好的编程习惯。所以我
另一个[]rune
持有[1-9a-f]
并将其提供给randString
。那
在我意识到stdlib已经包含int的格式化动词之前
适合我的类型。
实际上,重用我的randString
函数或单独编写代码是否更好
(效率更高)功能?我会生成一个随机int和Sprintf它
而不是必须循环并生成randString
所做的6个随机整数。
答案 0 :(得分:3)
由于:
作为旁注:这个问题正是您尝试创建的功能:How to generate a random string of a fixed length in golang?我提出了多种非常有效的解决方案。
答案 1 :(得分:1)
这是相当主观的,而不是特定的,但我认为你不应该仅仅为了重用而重用代码。您重用的代码越多,您在应用程序的不同部分之间创建的依赖关系就越多,因此维护和修改变得更加困难。易于理解和修改代码更为重要,尤其是如果您在团队中工作。
对于您的具体示例,我会执行以下操作。
如果在包装/应用程序中只生成一次随机颜色,则使用fmt.Sprintf("#%06x", rand.Intn(256*256*256))
完全没问题(正如Dave C所建议的那样)。
如果在多个地方生成随机颜色,我会创建函数func randColor() string
并调用它。请注意,现在您可以根据需要优化randColor
实现,而无需更改其余代码。例如,您最初可以使用randColor
实施randString
,然后在以后切换到更有效的实施。