package util import ( "bytes" "io/ioutil" "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text/transform" ) type Arr []string func (a Arr) Len() int { return len(a) } func (a Arr) Less(i, j int) bool { tmp1, _ := UTF82GBK(a[i]) tmp2, _ := UTF82GBK(a[j]) tmp2Len := len(tmp2) for idx, chr := range tmp1 { if idx > tmp2Len-1 { return false } if chr != tmp2[idx] { return chr < tmp2[idx] } } return true } func (a Arr) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func UTF82GBK(src string) ([]byte, error) { GB18030 := simplifiedchinese.All[0] return ioutil.ReadAll(transform.NewReader(bytes.NewReader([]byte(src)), GB18030.NewEncoder())) } // func main() { // tmp := Arr{"项目名称", "winner", "省份", "项目编号", "城市", "公告二级", "区县", "项目规模 ", "项目范围", "预算", "中标金额", "采购单位", "采购联系人 ", "中标电话 ", "中标地址 ", "竣工日期 ", "工期时长 ", "工期单位 ", "项目周期(服务周期) ", "评审专家 ", "招标文件购买金额 ", "投标保证金-是否支持保函", "ppp项目", "是否支持保函", "标的物", "多包", "中标候选人"} // sort.Sort(tmp) // fmt.Println(tmp) // }