728x90
반응형
1. UUID
- UUID는 16 바이트 또는 128 바이트 숫자로 구성되어 있고, 생성된 UUID가 동일할 확률은 극히 드물다.
- UUID는 32개의 16진수로 표시되며, 하이픈으로 구분된 5부분으로 구성된다.
- 8-4-4-4-12의 형식으로 되어 있다.
1) github.com/google/uuid
package main
import (
"fmt"
"strings"
"github.com/google/uuid"
)
func main() {
uuidWithHyphen := uuid.New()
fmt.Println(uuidWithHyphen)
uuid := strings.Replace(uuidWithHyphen.String(), "-", "", -1)
fmt.Println(uuid)
}
2) github.com/pborman/uuid
package main
import (
"fmt"
"strings"
"github.com/pborman/uuid"
)
func main() {
uuidWithHyphen := uuid.NewRandom()
fmt.Println(uuidWithHyphen)
uuid := strings.Replace(uuidWithHyphen.String(), "-", "", -1)
fmt.Println(uuid)
}
3) 내장 라이브러리 - os/exec
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
newUUID, err := exec.Command("uuidgen").Output()
if err != nil {
log.Fatal(err)
}
fmt.Println("Generated UUID:")
uuid := strings.Replace(newUUID.String(), "-", "", -1)
fmt.Printf("%s", uuid)
}
2. GUID
- 매 초마다 다른 GUID 보장
- 머신마다 다른 GUID 가 보장
- 같은 머신 내에서 프로세스가 생성될때마다 다른 GUID 가 보장
- 1초 내에 최대 24bit 만큼의 다른 GUID 생성 보장
- xid.New() 라고 하면 12 바이트의 []byte 가 생성된다.
- xid.New().String() 이라고 하면 20 바이트의 String 이 생성된다.
package main
import(
"fmt"
"time"
"github.com/rs/xid"
)
func main() {
for i:=0; i<10; i++{
tmpByte := xid.New()
tmpGUID := tmpByte.String()
// fmt.Println(tmpGUID)
fmt.Printf("%08b, %d, %s, %d, %T, %T\n", tmpByte, len(tmpByte), tmpGUID, len(tmpGUID), tmpByte, tmpGUID)
}
}
728x90
반응형
'DevOps > GoLang' 카테고리의 다른 글
Go AES-256 암호화 (1) | 2023.01.10 |
---|---|
Go 구조체 & 포인터 & 슬라이스 & 맵 (0) | 2023.01.08 |
Go 반복문 & 제어문 (0) | 2023.01.08 |
Go 변수 & 상수 (1) | 2023.01.02 |
Go 데이터 타입 (0) | 2023.01.02 |
댓글