这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
切片[a:b]包括a不包括b
go指针常用于参数的修改
错误处理:
当函数可能出现错误时 返回值可以多加入一种 err error 类型 当然没有出错时也需要返回一个error类型的值 nil 出错之后可以使用,errors.New() 这个函数尽心报错说明
字符串函数:
strings.Contains(s,"x") //判断s字符串中是否有x字串 strings.Count(s,"x") //x子串在s中出现的此时 strings.HasPrefix(s,"x")//判断字符串s是否以x前缀开头 strings.HasSuffix(s,"x")//判断字符串s时候以x后缀结尾 strings.Index(a,"xx")//返回a中xx的下标 strings.Join([]string{"x1","x2"},"x")//以x为连接符连接x1和x2 strings.Repeat(a,n)//将字符串a重复n次 strings.Split(s,"x")//以x为标志 分割s strings.ToLower(s)//小写输出s strings.ToUpper(s)//大写输出s
JSON操作:
JSON操作要求结构体内首字母大写 可以添加tag json:"age" xxx:"xxx" 得到结构体之后可以使用json.Marshal()对其进行系列化 如果想要打印出原有的字符值 需要将其转换为string类型 json格式化输出:使用json.MarshalIndent(s,"","\t") 反序列化:使用json.Umarshal(a,&b)//a为
时间处理
使用time.Now()函数;也可以用time.Date(年,月,日,时,分...,time.UTC)进行构建 可以使用函数.Year(),.Month(),.Day(),.Hour(),.Minute() 格式化输出:.Format("2006-01-02 15:04:05")//时间字符串 求两个时间的时间差使用.Sub()函数得到的结果再使用.Minutes()是分钟 .Seconds()是秒数
也可以使用time.Parse("2006-01-02 15:04:05","时间")去解析时间
时间戳:
time.Unix()
数字解析
主要使用strconv这个包里的相关函数 n,_:=strconv.ParseInt("s",n1,n2)s代表字符串 n1代表进制(0的话自动推测) n2代表返回是int64还是其他的类型。 n,_:=strconv.Atoi("s")将字符串转换为数字 n,_:=strconv.Rtoa(n)将数字转换为字符串
进程信息
使用os.Args获取运行进程中一些命令行参数 使用os.Getenv("PATH") 获取环境变量 使用os.Setenv("","") 写入环境变量 使用buf,err:=exec.Command("","127.0.0.1","/xxx").CombinedOutput()启动子进程获取其输入输出
第一个实战操作代码
package main
import (
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"strings"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano()) //初始化随机种子
secretNumber := rand.Intn(maxNum)
fmt.Println("the secret number is ", secretNumber)
fmt.Println("please input your guess")
reader := bufio.NewReader(os.Stdin)//读取文件
for {
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An err occured while reading input.Please try again.", err)
continue
}
input = strings.TrimSuffix(input, "\r\n")//去除字符串后缀 windows是\t\n
guess, err := strconv.Atoi(input)//字符串转换成数字
if err != nil {
fmt.Println("invalid input")
continue
}
fmt.Println("your guess is ", guess)
if guess > secretNumber {
fmt.Println("your guess is more")
} else if guess < secretNumber {
fmt.Println("your guess is less")
} else {
fmt.Println("correct you are good")
break
}
}
}