本文目錄一覽:
- 1、golang排序問題求助
- 2、常見問題之Golang—— no required module provides package XXXXX
- 3、golang 100題中的問題但是只有答案,想知道為什麼。
golang排序問題求助
如果是只有這幾個的話 我們可以考慮自定義一個排序類型
func TestSort(t *testing.T) {
data := []string{“三級”, “一級”, “二級”}
rule := map[string]int{
“一級”: 1,
“二級”: 2,
“三級”: 3,
}
self := SelfSort{
Rule: rule,
Data: data,
}
sort.Sort(self)
fmt.Println(self.Data)
}
type SelfSort struct {
Rule map[string]int
Data []string
}
func (p SelfSort) Len() int { return len(p.Data) }
func (p SelfSort) Less(i, j int) bool { return p.Rule[p.Data[i]] p.Rule[p.Data[j]] }
func (p SelfSort) Swap(i, j int) { p.Data[i], p.Data[j] = p.Data[j], p.Data[i] }
如過很多 就是真的要比較中文的話, 就用這種
package mainimport ( “bytes”
“fmt”
“io/ioutil”
“sort”
“golang.org/x/text/encoding/simplifiedchinese”
“golang.org/x/text/transform”)//ByPinyin is customized sort interface to sort string by Chinese PinYintype ByPinyin []stringfunc (s ByPinyin) Len() int { return len(s) }func (s ByPinyin) Swap(i, j int) { s[i], s[j] = s[j], s[i] }func (s ByPinyin) Less(i, j int) bool {
a, _ := UTF82GBK(s[i])
b, _ := UTF82GBK(s[j])
bLen := len(b) for idx, chr := range a { if idx bLen-1 { return false
} if chr != b[idx] { return chr b[idx]
}
} return true}//UTF82GBK : transform UTF8 rune into GBK byte arrayfunc UTF82GBK(src string) ([]byte, error) {
GB18030 := simplifiedchinese.All[0] return ioutil.ReadAll(transform.NewReader(bytes.NewReader([]byte(src)), GB18030.NewEncoder()))
}//GBK2UTF8 : transform GBK byte array into UTF8 stringfunc GBK2UTF8(src []byte) (string, error) {
GB18030 := simplifiedchinese.All[0]
bytes, err := ioutil.ReadAll(transform.NewReader(bytes.NewReader(src), GB18030.NewDecoder())) return string(bytes), err
}func main() {
b := []string{“哈”, “呼”, “嚯”, “ha”, “,”}
sort.Strings(b) //output: [, ha 呼 哈 嚯]
fmt.Println(“Default sort: “, b)
sort.Sort(ByPinyin(b)) //output: [, ha 哈 呼 嚯]
fmt.Println(“By Pinyin sort: “, b)
}
copy from 網頁鏈接
常見問題之Golang—— no required module provides package XXXXX
日常我們開發時,會遇到各種各樣的奇奇怪怪的問題(踩坑o(╯□╰)o),這個常見問題系列就是我日常遇到的一些問題的記錄文章系列,這裡整理匯總後分享給大家,讓其還在深坑中的小夥伴有繩索能爬出來。
同時在這裡也歡迎大家把自己遇到的問題留言或私信給我,我看看其能否給大家解決。
no required module provides package XXXXX
在使用包時沒有找到具體的包
1、檢查當前包是否有效引入了或該組件包是否與實際包名稱一致。
2、存在沒有開啟模塊化的問題,golang1.16以後都是默認開啟的,GO111MODULE=on
3、如果該錯誤後面還有其他的提示,就需要根據其他提示進行有針對性的處理了。
golang 100題中的問題但是只有答案,想知道為什麼。
只把最終的函數放到defer棧中,因此
defer s.Add(1).Add(2) 等價於下面2句了
s..Add(1)
defer s.Add(2)
你可以試試
defer s.Add(2).Add(1).Add(4)
s.Add(3)
看看執行的結果是不是 2134
原創文章,作者:OOIC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146418.html