"Go 랜덤 문자열 생성"의 두 판 사이의 차이

 
37번째 줄: 37번째 줄:
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"


func randString(length int) string {
func randomString(length int) string {
b := make([]byte, length)
b := make([]byte, length)
if _, err := rand.Read(b); err != nil {
if _, err := rand.Read(b); err != nil {
49번째 줄: 49번째 줄:


func main() {
func main() {
fmt.Println(randString(8))  // 5cKgG2TY
fmt.Println(randomString(8))  // 5cKgG2TY
fmt.Println(randString(16)) // ypOmJhqbOqc4vyTt
fmt.Println(randomString(16)) // ypOmJhqbOqc4vyTt
fmt.Println(randString(32)) // LdHZOt440JQMTskDEVbv72PxhtAwbJGX
fmt.Println(randomString(32)) // LdHZOt440JQMTskDEVbv72PxhtAwbJGX
}
}
</syntaxhighlight>
</syntaxhighlight>

2025년 1월 31일 (금) 13:29 기준 최신판

1 개요[ | ]

Go 랜덤 문자열 생성

2 소문자+숫자[ | ]

Go
Copy
package main

import (
	"fmt"
	"math/rand"
	"time"
)

func randomString(length int) string {
	var letters = []rune("abcdefghijklmnopqrstuvwxyz0123456789")
	b := make([]rune, length)
	for i := range b {
		b[i] = letters[rand.Intn(len(letters))]
	}
	return string(b)
}

func main() {
	fmt.Println(randomString(8)) // uqhwdb2x
}

3 대소문자+숫자[ | ]

Go
Copy
package main

import (
	"crypto/rand"
	"fmt"
)

const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

func randomString(length int) string {
	b := make([]byte, length)
	if _, err := rand.Read(b); err != nil {
		return ""
	}
	for i := range b {
		b[i] = charset[b[i]%byte(len(charset))]
	}
	return string(b)
}

func main() {
	fmt.Println(randomString(8))  // 5cKgG2TY
	fmt.Println(randomString(16)) // ypOmJhqbOqc4vyTt
	fmt.Println(randomString(32)) // LdHZOt440JQMTskDEVbv72PxhtAwbJGX
}

4 같이 보기[ | ]