最近在学go, 按照入门指南学完go的基础语法, 开始学习go的标准库; 借用生成这个小任务复习一下go的基础语法.
推荐go编辑, jb公司的goland, 超级好用.
推荐go入门指南, https://tour.go-zh.org/list
package mainimport ( "fmt" "math/rand" "sync")func main() { //fmt.Println("random: ", rand.Intn(100)) res := Example(, ) ; i<len(res); i++ { fmt.Println(i+,res[i]) }}/**len: 长度max: 个数随机生成长度为len的max个纯数字随机数 */func Example(length int, max int) []string{ // Seeding with the same value results in the same random sequence each run. // For different numbers, seed with a different value, such as // time.Now().UnixNano(), which yields a constantly-changing number. //rand.Seed(42) digitNumber := []string { ", ", ", ", ", ", ", ", ", ", } // 用make创建map set := New() for ; set.Len() < max ; { ranNumber := "" ; j<length; j++ { ranNumber += digitNumber[rand.Intn(len(digitNumber))] } if !set.Has(ranNumber){ set.Add(ranNumber) } } return set.List()}/**构造set类型 */type Set struct { m map[string]bool sync.RWMutex}func New() *Set { return &Set{ m: map[string]bool{}, }}func (s *Set) Add(item string) { s.Lock() defer s.Unlock() s.m[item] = true}func (s *Set) Remove(item string) { s.Lock() s.Unlock() delete(s.m, item)}func (s *Set) Has(item string) bool { s.RLock() defer s.RUnlock() _, ok := s.m[item] return ok}func (s *Set) Len() int { return len(s.List())}func (s *Set) Clear() { s.Lock() defer s.Unlock() s.m = map[string]bool{}}func (s *Set) IsEmpty() bool { { return true } return false}func (s *Set) List() []string { s.RLock() defer s.RUnlock() list := []string{} for item := range s.m { list = append(list, item) } return list}