gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/myx/identx/confuse.go (about) 1 package identx 2 3 import ( 4 "gitee.com/zhongguo168a/gocodes/myx/scale" 5 "sync" 6 ) 7 8 var confuseRule = map[uint8]*scale.ConfuseRule{} 9 var confuseMutex sync.RWMutex 10 11 func confuseChar(index uint8, char uint8) uint8 { 12 confuseMutex.RLock() 13 rule, has := confuseRule[index] 14 confuseMutex.RUnlock() 15 if has == false { 16 rule = scale.NewConfuseRule(int64(index), scaleN) 17 18 confuseMutex.Lock() 19 confuseRule[index] = rule 20 confuseMutex.Unlock() 21 } 22 return rule.NormalToConfuse(char) 23 } 24 25 func normalChar(index uint8, char uint8) uint8 { 26 confuseMutex.RLock() 27 rule, has := confuseRule[index] 28 confuseMutex.RUnlock() 29 if has == false { 30 rule = scale.NewConfuseRule(int64(index), scaleN) 31 confuseMutex.Lock() 32 confuseRule[index] = rule 33 confuseMutex.Unlock() 34 } 35 return rule.ConfuseToNormal(char) 36 }