golang辅助方法

package helpers

import (
    "math/rand"
    "time"
    "os"
    "path/filepath"
)

// GenerateRandomString 使用 math/rand 生成指定长度的随机字符串
func GenerateRandomString(length int) string {
    const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    source := rand.NewSource(time.Now().UnixNano()) // 创建一个新的随机数源
    r := rand.New(source)                           // 使用这个源创建一个新的随机数生成器

    result := make([]byte, length)
    for i := range result {
        result[i] = charset[r.Intn(len(charset))] // 使用新的随机数生成器 r 从 charset 中随机选择字符
    }
    return string(result)
}

// 获取应用数据目录
func GetUserDataDir(appName string) string {
    // 获取用户主目录
    homeDir, _ := os.UserHomeDir()

    // 定义应用的数据目录(根据需要调整路径)
    appDataDir := filepath.Join(homeDir, "AppData", "Roaming", appName) // Windows 示例
    if runtime.GOOS == "darwin" {
        appDataDir = filepath.Join(homeDir, "Library", "Application Support", appName)
    }

    // fmt.Println("appDataDir:", appDataDir)
    log.Info("appDataDir:", appDataDir)

    // 如果目录不存在,则创建
    if _, err := os.Stat(appDataDir); os.IsNotExist(err) {
        os.MkdirAll(appDataDir, 0755)
    }

    return appDataDir
}
无标签
评论区
头像