From e90588b9cac1258f73471b9bfe07b773e5ca88e3 Mon Sep 17 00:00:00 2001 From: Bobo Date: Tue, 22 Apr 2025 18:46:41 +0800 Subject: [PATCH] feat: random string --- rand/rand.go | 17 ++++++++--------- rand/rand_test.go | 3 +++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/rand/rand.go b/rand/rand.go index 9a4804d..c5eaa7a 100644 --- a/rand/rand.go +++ b/rand/rand.go @@ -59,18 +59,17 @@ func RandomInt64(min, max int64) int64 { // RandomString 随机字符串,包含大小写字母和数字 func RandomString(l int) string { + if l <= 0 { + return "" + } + + const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + bytes := make([]byte, l) for i := 0; i < l; i++ { - x := Intn(3) - switch x { - case 0: - bytes[i] = byte(RandomInt(65, 90)) //大写字母 - case 1: - bytes[i] = byte(RandomInt(97, 122)) - case 2: - bytes[i] = byte(Intn(10)) - } + bytes[i] = charset[Intn(len(charset))] } + return string(bytes) } diff --git a/rand/rand_test.go b/rand/rand_test.go index 7cfe084..f7bdbe7 100644 --- a/rand/rand_test.go +++ b/rand/rand_test.go @@ -208,11 +208,13 @@ func TestRandomInt64_ZeroRange(t *testing.T) { func TestRandomString_LengthZero(t *testing.T) { result := RandomString(0) assert.Equal(t, "", result) + t.Logf("LengthZero: %s", result) } func TestRandomString_PositiveLength(t *testing.T) { result := RandomString(10) assert.Len(t, result, 10) + t.Logf("PositiveLength: %s", result) } func TestRandomString_ContainsOnlyValidCharacters(t *testing.T) { @@ -220,6 +222,7 @@ func TestRandomString_ContainsOnlyValidCharacters(t *testing.T) { for _, char := range result { assert.True(t, (char >= 'A' && char <= 'Z') || (char >= 'a' && char <= 'z') || (char >= '0' && char <= '9')) } + t.Logf("ContainsOnlyValidCharacters: %s", result) } func TestRandomString_NegativeLength(t *testing.T) {