1. 字符处理
1) strings
1. 命令行参数
1.1 os.Args包
func main() {
fmt.Println(os.Args)
for k,v :=range os.Args{
fmt.Println(k,v)
}
}
1.2 flag包
func main() {
var host string
var port int
var help bool
// 第1个是传入值参数,第2个是命令参数,第3个是默认值,第4个是提示帮助信息
flag.IntVar(&port,"P",22,"ssh port")
flag.StringVar(&host,"h","127.0.0.1","ssh -h 127.0.0.1")
flag.BoolVar(&help,"-help",false,"help")
flag.Usage = func() {
fmt.Println("usage: flagargs [-h 127.0.0.1] [-P 22] [--help] [args01 args02]")
flag.PrintDefaults()
}
// 解析命令行参数
flag.Parse()
if help {
flag.Usage()
}else {
fmt.Println(host,port)
fmt.Println(flag.Args())
}
}
package main
import (
"flag"
"fmt"
)
func main() {
// 第1个是命令参数,第2个是默认值,第3个是提示帮助信息
port:=flag.Int("P",22,"ssh port")
host:=flag.String("h","127.0.0.1","ssh -h 127.0.0.1")
help:=flag.Bool("-help",false,"help")
flag.Usage = func() {
fmt.Println("usage: flagargs [-h 127.0.0.1] [-P 22] [--help] [args01 args02]")
flag.PrintDefaults()
}
// 解析命令行参数
flag.Parse()
if *help {
flag.Usage()
}else {
fmt.Println(*host,*port)
fmt.Println(flag.Args())
}
}



2. time模块
package main
import (
"fmt"
"time"
)
func main() {
// 获取当前时间
now := time.Now()
fmt.Println(now)
fmt.Println(now.Format("2006/01/02 15:04:05"))
fmt.Println(now.Format("2006-01-02 15:04:05"))
fmt.Println(now.Format("2006/01/02"))
fmt.Println(now.Format("15:04:05"))
fmt.Println(now.Unix())
fmt.Println(now.UnixNano())
t, err := time.Parse("2006-01-02 15:04:05", "2020-02-02 14:22:22")
fmt.Println(t, err)
fmt.Println(time.Now())
time.Sleep(time.Second * 5)
fmt.Println(time.Now())
// 查看3小时后的时间
t = now.Add(time.Hour * 3)
fmt.Println(t)
// 时间转换
d, err := time.ParseDuration("3h2m4s")
fmt.Println(d, err)
fmt.Println(d.Hours(),"小时")
fmt.Println(d.Minutes(),"分钟")
fmt.Println(d.Seconds(),"秒")
}
3. md5值
func main() {
bytes:=md5.Sum([]byte("dadong"))
x:=fmt.Sprintf("%X",bytes)
fmt.Println(hex.EncodeToString(bytes[:]))
fmt.Println(x)
m:=md5.New()
m.Write([]byte("da"))
m.Write([]byte("dong"))
fmt.Printf("%x\n",m.Sum(nil))
}
4. log
func main() {
log.SetPrefix("我的作用:给日志加前缀\t")
log.Println("我是println日志")
log.Fatal("我是fatal日志,打印完后退出状态为1")
}
5. 设置加密密码
- 字符串转换为字节切片
[]byte(string)
- 字节切片转换字符串
string([]byte)
func main() {
const passwd = "E10ADC3949BA59ABBE56E057F20F883E"
fmt.Printf("请输入密码:")
bytes,_:=gopass.GetPasswd()
if fmt.Sprintf("%X",md5.Sum(bytes)) == passwd{
fmt.Println("密码输入正确")
}else {
fmt.Println("密码输入错误,程序退出")
}
}