package main import ( "fmt" ) func testIf1() { num := 10 //var num int //num = 10 if num%2 == 0 { fmt.Printf("num:%d is even\n", num) } else { fmt.Printf("num:%d is odd\n", num) } fmt.Printf("num=%d\n", num) } func testIf2() { num := 10 if num > 5 && num < 10 { fmt.Printf("num:%d is > 5 and < 10\n", num) } else if num >= 10 && num < 20 { fmt.Printf("num:%d is > 10 and < 20\n,", num) } else if num >= 20 && num < 30 { fmt.Printf("num:%d is > 20 and < 30\n", num) } else { fmt.Printf("num:%d is > 30\n", num) } } func testIf3() { //num := 10 //var num int //num = 10 if num := 11; num%2 == 0 { fmt.Printf("num:%d is even\n", num) } else { fmt.Printf("num:%d is odd\n", num) } //fmt.Printf("num=%d\n", num) } func getNum() int { return 1 } func testIf4() { //num := 10 //var num int //num = 10 if num := getNum(); num%2 == 0 { fmt.Printf("num:%d is even\n", num) } else { fmt.Printf("num:%d is odd\n", num) } //fmt.Printf("num=%d\n", num) } func main() { //testIf1() //testIf2() //testIf3() testIf4() }
package main import ( "fmt" "math/rand" "time" ) func testFor1() { var i int for i = 1; i < 10; i++ { fmt.Printf("i=%d\n", i) } fmt.Printf("final:i=%d\n", i) } func testFor2() { var i int for i = 1; i < 10; i++ { fmt.Printf("i=%d\n", i) if i > 5 { break } } fmt.Println(i) } //打印奇数 func testFor3() { var i int for i = 1; i < 1000; i++ { //正整数,就调出本次循环,所以不打印 if i%2 == 0 { continue } fmt.Printf("i=%d\n", i) } } func testFor4() { i := 1 for i <= 10 { fmt.Printf("i=%d\n", i) i = i + 2 } } func testFor5() { i := 1 for i <= 10 { fmt.Printf("i=%d\n", i) i = i + 2 } } func testMultiSign() { a, b, c := 10, "hello", 100 fmt.Printf("a=%d b=%s c=%d\n", a, b, c) } func testFor6() { for no, i := 10, 1; i <= 10 && no <= 19; i, no = i+1, no+1 { fmt.Printf("%d*%d=%d\n", no, i, no*i) } } func testFor7() { for { fmt.Printf("hello\n") time.Sleep(time.Second) } } //峰云大神-http://xiaorui.cc/2016/03/23/golang%E9%9A%8F%E6%9C%BAtime-sleep%E7%9A%84duration%E9%97%AE%E9%A2%98/ func fengyun() { rand.Seed(time.Now().UnixNano()) for i := 0; i < 10; i++ { x := rand.Intn(10) fmt.Println(x) time.Sleep(time.Duration(x) * time.Second) } } //入口执行函数 func main() { //testFor1() //testFor2() //testFor3() //testFor4() //testFor5() //testFor6() //testFor7() fengyun() }
package main import ( "flag" "fmt" "math/rand" "time" ) var ( length int charset string ) const ( NUmStr = "0123456789" CharStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" SpecStr = "+=-@#~,.[]()!%^*$" ) //解析参数 func parseArgs() { //需要接受指针,就传递地址,& flag.IntVar(&length, "l", 16, "-l 生成密码的长度") flag.StringVar(&charset, "t", "num", //反引号以原样输出 `-t 制定密码生成的字符集, num:只使用数字[0-9], char:只使用英文字母[a-zA-Z], mix:使用数字和字母, advance:使用数字、字母以及特殊字符`) flag.Parse() } //检测字符串中的空格 func test1() { for i := 0; i < len(CharStr); i++ { if CharStr[i] != ‘ ‘ { fmt.Printf("%c", CharStr[i]) } } } func generatePasswd() string { //初始化密码切片 var passwd []byte = make([]byte, length, length) //源字符串 var sourceStr string //判断字符类型,如果是数字 if charset == "num" { sourceStr = NUmStr //如果选的是字符 } else if charset == "char" { sourceStr = charset //如果选的是混合模式 } 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 } fmt.Println("source:", sourceStr) //遍历,生成一个随机index索引, for i := 0; i < length; i++ { index := rand.Intn(len(sourceStr)) passwd[i] = sourceStr[index] } return string(passwd) } func main() { //随机种子 rand.Seed(time.Now().UnixNano()) parseArgs() fmt.Printf("length:%d charset:%s\n", length, charset) //test1() passwd := generatePasswd() fmt.Println(passwd) fmt.Printf("length:%d charset:%s\n", length, charset) }
package main import ( "fmt" ) //outerFunc是外围函数 //defer执行顺序是,先进后出,延迟调用指定的函数 //当外围函数中语句执行完毕时,只有延迟函数都执行完毕,外围函数才真的结束 //当执行外媒函数中的return时,只有延迟函数都执行完毕,外围函数才返回 //当外围函数中的代码引发运行错误时,只有延迟函数执行完毕,运行时的错误才会被扩散至调用函数。 //因此defer常用在执行释放资源或异常处理等收尾任务 //defer语句在外围函数体中位置不限,数量不限 func printNumbers() { for i := 0; i < 5; i++ { //defer被压进一个栈,函数完毕前一刻,先进后出,所以是43210 defer func() { fmt.Printf("%d", i) }() } } func printNumbers1() { for i := 0; i < 5; i++ { //defer被压进一个栈,函数完毕前一刻,先进后出,所以是43210 defer func(n int) { fmt.Printf("%d", n) }(i) } } func printNumbers2() { for i := 0; i < 5; i++ { //defer被压进一个栈,函数完毕前一刻,先进后出,所以是43210 defer func(n int) { fmt.Printf("%d", n) }(i * 2) } } func main() { printNumbers() fmt.Println() printNumbers1() fmt.Println() printNumbers2() }
package main import ( "bufio" "fmt" "os" "strings" ) func main() { //从标准输入读取数据 inputReader := bufio.NewReader(os.Stdin) fmt.Println("Please input your name:") //读取数据直到遇见\n位置 input, err := inputReader.ReadString(‘\n‘) if err != nil { fmt.Printf("An error occurred:%s\n", err) //异常错误后退出 os.Exit(1) } else { //用切片操作删除最后的\n name := input[:len(input)-1] fmt.Printf("Hello,%s!What can i di for you?\n", name) } for { input, err = inputReader.ReadString(‘\n‘) if err != nil { fmt.Printf("An error occurred:%s\n", err) continue } input = input[:len(input)-1] //全部转换为小写 input = strings.ToLower(input) switch input { case "": continue case "nothing", "bye": fmt.Println("Bye!") //正常退出 os.Exit(0) default: fmt.Println("Sorry,I didn‘t catch you.") } } }
原文:https://www.cnblogs.com/bubu99/p/12521709.html