Golang基础 | 青训笔记

148 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

Go 语法

  1. a = append(a, "s") // 切片添加后必须赋值回给a

  2. 后置写法 自定义函数(传来的参数) (函数返回的参数) := 定义赋值 = 赋值

  3. println 输出并换行

  4. printf %v 代表任意类型

  5. time.now 获取现在时间 time.format 重新格式化 time.Unix 获取时间戳

  6. strconv 字符串和数字转换的包 如

     f,_ := strconv.ParseFloat("11.2", 64)
     f,_ := strconv.Parseint("11",10,  64)  // 十进制六十四位
     n, _ = strconv.ParseInt("0x1000", 0, 64)    //n 4096
    
  7. os.Args 获取进程的运行时的一些参数

     go run a.go a b   // os.Args[0] = (.go目的地址)  
     os.Args[1] = a os.Args[2] = b 
     os.Getenv  获取环境变量    // os.Getenv("PATH")
     os.setenv   写入环境变量
     os.Command 快速启动子进程并且输入输出
    
  8. string map 的定义 可以直接 a:=map[string]int{赋值} 也可以加a:=make(str..) 不用赋值

  9. struct method 写法

     func (u *user) resetPassword(password string) {..
    
  10. error 是一种数据类型 err != nil 存在错误

  11. json

    b, err := json.Marshal(a)  转换成json (序列化)  
    fmt.println(string(b)) 才行
    var xx userInfo //结构体类型  
    err = json.Unmarshal(b, &xx)   json转成xx类型
    fmt.printf("%#v\n", xx)  最详细方式打印
    
  12. defer: 语句会将其后面跟随的语句进行延迟处理,在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。

  13. bufio 存到缓冲区的文件读写 ,bufio 封装了io.Reader或io.Writer接口对象

    reader := bufio.NewReader(conn)        // 从conn  读取    
    reader := bufio.NewReader(os.Stdin)  // 从stdin读入
        input, err := reader.ReadString('\n')
        input = strings.TrimSuffix(input, "\n") // 去\n
        guess, err := strconv.Atoi(input) // 转int
    bufio.Readbyte()   (从缓存区)读取单字节
    

    ReadFull:

    func ReadFull(r Reader, buf []byte) (n int, err error)  
    

从指定的读取器“r”读入指定的缓冲区“buf”,并且复制的字节与指定缓冲区的长度完全相等 返回指定缓冲区复制的字节数,如果读取的字节数小于指定缓冲区的长度,则返回错误

fmt.scanf的输入:

      _, err := fmt.Scanf("%d\n", &guess)   //需要时要吸收换行符

字典项目

思路:通过向翻译网站发送请求获取response,解析内容,通过准出的结构体定义找到需要的内容并输出

  1. network 找到请求 复制as cURL(bash)
  2. curlconverter.com/#go 粘贴
  3. 13 行 请求的内容 14行 创建请求 Newrequest ("POST","//(URL)", data) 36行 resp, err := client.Do(req) 发起请求 若连不上服务器才会err != nil

4.www.oktools.net/json2go 转出json结构体定义

Socks5代理

运行方式: go run main.go curl --socks5 127.0.0.1:1080 -v www.qq.com (-v 要打印请求的所有细节) 开发过程中的测试: nc 127.0.0.1 1080 (nc命令用于建立tcp连接)

1.log.Println("ver", ver, "method", method) // 加行日志打印出来

标题:「Go 语言上手-基础语言」第三届字节跳动青训营 - 后端专场

网址:live.juejin.cn/4354/yc_bas…