package game import ( "fmt" "runtime" "strconv" "strings" "sync" ) //获取线程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 _uuidIntLock sync.Mutex //获取int型的自增ID func GetUuidInt(key string) int { _uuidIntLock.Lock() id := _uuidIntMap[key] nextID := id + 1 if nextID > 1000000000 { nextID = 0 } _uuidIntMap[key] = nextID _uuidIntLock.Unlock() return id }