ByteDance青训营第一课|青训营笔记

272 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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
      }
   }
}