zoukankan      html  css  js  c++  java
  • go 切片练习

    下列程序输出什么?

    package main

    import "fmt"

    func main() {
        var sa = make([]string, 5, 10)
        for i := 0; i < 10; i++ {
            sa = append(sa, fmt.Sprintf("%v", i))
        }
        fmt.Println(sa)
        fmt.Printf("sa长度= %d sa 容量=%d ", len(sa), cap(sa))
    }

    /*
    [      0 1 2 3 4 5 6 7 8 9]
    sa长度= 15 sa 容量=20
    */
    /*
    [       0 1 2 3 4 5 6 7 8 9]
    sa长度= 15 sa 容量=20
    */
     
     
    2. 使用golang标准包 “sort”对数组进行排序
     
    package main
    
    import (
        "fmt"
        "sort"
    )
    
    func sortTest() {
        a := [...]int{1, 5, 6, 3, 4, 9}
        sort.Ints(a[:])
        fmt.Println("a:", a)
    
        var b [5]string = [5]string{"ac", "ec", "be", "fa", "ii"}
        sort.Strings(b[:])
        fmt.Println("b:", b)
    
        var c [5]float64 = [5]float64{29.38, 22.32, 0.8, 99191.2}
        sort.Float64s(c[:])
    
        fmt.Println("c:", c)
    
    }
    func main() {
        sortTest()
    }

    3. 实现一个密码生成工 具,具持以下功能:
    a) 用户可以通过-l指定生成密码的长度
    b) 用户可以通过-t指定生成密码的字符集,比如

    -t num生成全数字的密码

    -t char 生成包含全英文字符的密码,

    -t mix包含成数字和英文的密码,

    -t advance 生成包含数字、英文以及特殊字符的密码

    package main
    
    import (
        "flag"
        "fmt"
        "math/rand"
    )
    
    var (
        length  int
        charset string
    )
    
    const (
        NumStr  = "0123456789"
        CharStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
        SpecStr = "+=-@#~,.[]()!%^*$"
    )
    
    func parseCommand() {
        flag.IntVar(&length, "l", 16, "-l 生成密码的长度")
        flag.StringVar(&charset, "t", "num",
            `-t 制定密码生成的字符集, 
            num:只使用数字[0-9], 
            char:只使用英文字母[a-zA-Z], 
            mix: 使用数字和字母, 
            advance:使用数字、字母以及特殊字符`)
        flag.Parse()
    }
    
    func getPwd() string {
        var pwd []byte = make([]byte, length, length)
        var sourceStr string
        if charset == "num" {
            sourceStr = NumStr
        } else if charset == "char" {
            sourceStr = CharStr
        } else if charset == "mix" {
            sourceStr = fmt.Sprintf("%s%s", NumStr, CharStr)
    
        } else if charset == "advance" {
            sourceStr = fmt.Sprintf("%s%s%s", NumStr, CharStr, SpecStr)
        } else {
            sourceStr = NumStr
        }
    
        for i := 0; i < length; i++ {
            index := rand.Intn(len(sourceStr))
            pwd[i] = sourceStr[index]
        }
        fmt.Println(string(pwd))
        return string(pwd)
    }
    
    func main() {
        parseCommand()
        pwd := getPwd()
        fmt.Println(pwd)
    }
     
  • 相关阅读:
    简单工厂笔记
    P3369 【模板】普通平衡树 Treap树堆学习笔记
    tp5阿里云短信验证码
    centos 安装php
    tp6.0.2开启多应用模式
    linux navicat最新版过期
    git commit之后 取消commit
    服务器重置之后ssh root@报错
    git pull push 每次都需要输入账号和密码
    跨域问题 php
  • 原文地址:https://www.cnblogs.com/ctztake/p/10325214.html
Copyright © 2011-2022 走看看