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)
    }
     
  • 相关阅读:
    requests使用text可以查看源码
    正则表达式之search、sub
    【JS】深拷贝与浅拷贝的区别,实现深拷贝的几种方法
    php:对象(object)数据类型实例详解
    usage: git remote add [<options>] <name> <url> -f, --fetch fetch the remote branches --tags import all tags and associated objects when fetching
    PHP 可选参数
    php中文乱码问题的终极解决方案汇总
    html表单提交给PHP然后浏览器显示出了PHP的源代码
    wamp 安装
    wamp选择语言
  • 原文地址:https://www.cnblogs.com/ctztake/p/10325214.html
Copyright © 2011-2022 走看看