60 lines
2.1 KiB
Go
60 lines
2.1 KiB
Go
package utility
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"time"
|
|
)
|
|
|
|
var adjectives = []string{
|
|
"Swift", "Brave", "Clever", "Happy", "Lucky", "Mysterious", "Bold", "Fierce", "Noble", "Graceful",
|
|
"Vivid", "Loyal", "Fearless", "Cunning", "Wise", "Radiant", "Silent", "Majestic", "Gentle", "Persistent",
|
|
"Curious", "Agile", "Sharp", "Elegant", "Eager", "Vigorous", "Daring", "Mighty", "Witty", "Strong",
|
|
"Bright", "Persistent", "Resilient", "Fearless", "Imaginative", "Creative", "Charming", "Playful", "Vigorous",
|
|
"Passionate", "Dashing", "Resolute", "Adventurous", "Energetic", "Courageous",
|
|
}
|
|
|
|
var animals = []string{
|
|
"Tiger", "Panda", "Eagle", "Wolf", "Lion", "Fox", "Bear", "Falcon", "Shark", "Rabbit",
|
|
"Elephant", "Zebra", "Cheetah", "Jaguar", "Leopard", "Giraffe", "Hawk", "Owl", "Dragon", "Whale",
|
|
"Buffalo", "Panther", "Raven", "Vulture", "Bison", "Wolfhound", "Penguin", "Koala", "Coyote", "Crocodile",
|
|
"Rhinoceros", "Kangaroo", "Camel", "Alligator", "Otter", "Squid", "Octopus", "Cheetah", "Lynx", "Mole",
|
|
"Seagull", "Tiger Shark", "Wolverine", "Snow Leopard", "Bald Eagle",
|
|
}
|
|
|
|
// 生成唯一昵称
|
|
func GenerateUniqueNickname() (string, error) {
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
nickname := fmt.Sprintf("%s%s%s%s", // 形容词 + 动物名 + 随机字母 + 随机数字
|
|
adjectives[rand.Intn(len(adjectives))],
|
|
animals[rand.Intn(len(animals))],
|
|
randomString(1), // 随机一个字母
|
|
randomDigits(4), // 随机 4 个数字
|
|
)
|
|
|
|
return nickname, fmt.Errorf("未能生成唯一昵称")
|
|
}
|
|
|
|
// 随机生成字母
|
|
func randomString(n int) string {
|
|
letters := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|
rand.Seed(time.Now().UnixNano())
|
|
result := make([]rune, n)
|
|
for i := range result {
|
|
result[i] = letters[rand.Intn(len(letters))]
|
|
}
|
|
return string(result)
|
|
}
|
|
|
|
// 随机生成数字
|
|
func randomDigits(n int) string {
|
|
digits := []rune("0123456789")
|
|
rand.Seed(time.Now().UnixNano())
|
|
result := make([]rune, n)
|
|
for i := range result {
|
|
result[i] = digits[rand.Intn(len(digits))]
|
|
}
|
|
return string(result)
|
|
}
|