44 lines
		
	
	
		
			685 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			685 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package types
 | 
						||
 | 
						||
import (
 | 
						||
	"fmt"
 | 
						||
 | 
						||
	"archgrid.xyz/ag/toolsbox/hash/crc64"
 | 
						||
)
 | 
						||
 | 
						||
type CRC64Algorithm string
 | 
						||
 | 
						||
const (
 | 
						||
	CRC64_ISO  CRC64Algorithm = "iso"
 | 
						||
	CRC64_ECMA CRC64Algorithm = "ecma"
 | 
						||
)
 | 
						||
 | 
						||
func (a *CRC64Algorithm) String() string {
 | 
						||
	return string(*a)
 | 
						||
}
 | 
						||
 | 
						||
func (a *CRC64Algorithm) Set(s string) error {
 | 
						||
	switch s {
 | 
						||
	case "iso", "ecma":
 | 
						||
		*a = CRC64Algorithm(s)
 | 
						||
		return nil
 | 
						||
	default:
 | 
						||
		return fmt.Errorf("不支持的CRC64算法:%s", s)
 | 
						||
	}
 | 
						||
}
 | 
						||
 | 
						||
func (a *CRC64Algorithm) Type() string {
 | 
						||
	return "CRC64Algorithm"
 | 
						||
}
 | 
						||
 | 
						||
func (a CRC64Algorithm) IntoCRC64Mode() crc64.CRC64Mode {
 | 
						||
	switch a {
 | 
						||
	case CRC64_ISO:
 | 
						||
		return crc64.ISO
 | 
						||
	case CRC64_ECMA:
 | 
						||
		return crc64.ECMA
 | 
						||
	default:
 | 
						||
		return crc64.ISO
 | 
						||
	}
 | 
						||
}
 |