| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package game
- import (
- "fmt"
- "runtime"
- "strconv"
- "strings"
- "sync"
- "github.com/gofrs/uuid"
- )
- //获取线程ID
- func GoID() int {
- var buf [64]byte
- n := runtime.Stack(buf[:], false)
- idField := strings.Fields(strings.TrimPrefix(string(buf[:n]), "goroutine "))[0]
- id, err := strconv.Atoi(idField)
- if err != nil {
- panic(fmt.Sprintf("cannot get goroutine id: %v", err))
- }
- return id
- }
- var uuidIntMap = make(map[string]int)
- var uuidIntMapLock sync.Mutex
- //获取int型的自增id(范围1~2111111111)
- func GetUuidInt(key string) int {
- uuidIntMapLock.Lock()
- defer uuidIntMapLock.Unlock()
- id := uuidIntMap[key] + 1
- if id > 2111111111 {
- id = 1
- }
- uuidIntMap[key] = id
- return id
- }
- func NewUUID() string {
- uidStr := ""
- uid, err := uuid.NewV1()
- if err == nil {
- uidStr = strings.ReplaceAll(uid.String(), "-", "")
- }
- return uidStr
- }
|