1. 字符处理

1) strings

1. 命令行参数

1.1 os.Args包

  1. func main() {
  2. fmt.Println(os.Args)
  3. for k,v :=range os.Args{
  4. fmt.Println(k,v)
  5. }
  6. }

image.png

1.2 flag包

  1. func main() {
  2. var host string
  3. var port int
  4. var help bool
  5. // 第1个是传入值参数,第2个是命令参数,第3个是默认值,第4个是提示帮助信息
  6. flag.IntVar(&port,"P",22,"ssh port")
  7. flag.StringVar(&host,"h","127.0.0.1","ssh -h 127.0.0.1")
  8. flag.BoolVar(&help,"-help",false,"help")
  9. flag.Usage = func() {
  10. fmt.Println("usage: flagargs [-h 127.0.0.1] [-P 22] [--help] [args01 args02]")
  11. flag.PrintDefaults()
  12. }
  13. // 解析命令行参数
  14. flag.Parse()
  15. if help {
  16. flag.Usage()
  17. }else {
  18. fmt.Println(host,port)
  19. fmt.Println(flag.Args())
  20. }
  21. }
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. )
  6. func main() {
  7. // 第1个是命令参数,第2个是默认值,第3个是提示帮助信息
  8. port:=flag.Int("P",22,"ssh port")
  9. host:=flag.String("h","127.0.0.1","ssh -h 127.0.0.1")
  10. help:=flag.Bool("-help",false,"help")
  11. flag.Usage = func() {
  12. fmt.Println("usage: flagargs [-h 127.0.0.1] [-P 22] [--help] [args01 args02]")
  13. flag.PrintDefaults()
  14. }
  15. // 解析命令行参数
  16. flag.Parse()
  17. if *help {
  18. flag.Usage()
  19. }else {
  20. fmt.Println(*host,*port)
  21. fmt.Println(flag.Args())
  22. }
  23. }

image.png
image.png
image.png
image.png

2. time模块

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. // 获取当前时间
  8. now := time.Now()
  9. fmt.Println(now)
  10. fmt.Println(now.Format("2006/01/02 15:04:05"))
  11. fmt.Println(now.Format("2006-01-02 15:04:05"))
  12. fmt.Println(now.Format("2006/01/02"))
  13. fmt.Println(now.Format("15:04:05"))
  14. fmt.Println(now.Unix())
  15. fmt.Println(now.UnixNano())
  16. t, err := time.Parse("2006-01-02 15:04:05", "2020-02-02 14:22:22")
  17. fmt.Println(t, err)
  18. fmt.Println(time.Now())
  19. time.Sleep(time.Second * 5)
  20. fmt.Println(time.Now())
  21. // 查看3小时后的时间
  22. t = now.Add(time.Hour * 3)
  23. fmt.Println(t)
  24. // 时间转换
  25. d, err := time.ParseDuration("3h2m4s")
  26. fmt.Println(d, err)
  27. fmt.Println(d.Hours(),"小时")
  28. fmt.Println(d.Minutes(),"分钟")
  29. fmt.Println(d.Seconds(),"秒")
  30. }

image.png

3. md5值

  1. func main() {
  2. bytes:=md5.Sum([]byte("dadong"))
  3. x:=fmt.Sprintf("%X",bytes)
  4. fmt.Println(hex.EncodeToString(bytes[:]))
  5. fmt.Println(x)
  6. m:=md5.New()
  7. m.Write([]byte("da"))
  8. m.Write([]byte("dong"))
  9. fmt.Printf("%x\n",m.Sum(nil))
  10. }

4. log

  1. func main() {
  2. log.SetPrefix("我的作用:给日志加前缀\t")
  3. log.Println("我是println日志")
  4. log.Fatal("我是fatal日志,打印完后退出状态为1")
  5. }

image.png

5. 设置加密密码

  • 字符串转换为字节切片 []byte(string)
  • 字节切片转换字符串 string([]byte)
    1. func main() {
    2. const passwd = "E10ADC3949BA59ABBE56E057F20F883E"
    3. fmt.Printf("请输入密码:")
    4. bytes,_:=gopass.GetPasswd()
    5. if fmt.Sprintf("%X",md5.Sum(bytes)) == passwd{
    6. fmt.Println("密码输入正确")
    7. }else {
    8. fmt.Println("密码输入错误,程序退出")
    9. }
    10. }