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  }