Go的基础语法 | 青训营笔记

64 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

本节课主要学习了Go的基础语法

- Go简介

- 特点

  •     -   高并发:通过设计保证系统能够同时并行处理很多请求  
    
  •     -   使用标准库即可,不需要借助第三方库 
    
  •     -   基于C语言,但语法更简单  
    
  •     -   完善工具链  
    
  •     -   编译结果静态链接,无需附加,编译速度快  
    
  •     -   跨平台  
    
  •     -   垃圾回收  
    

- 公司

- 基础语法

-   变量  
    -   声明  
        -   var 变量名 (变量类型)= 值  
        -   变量名 := 值       
    -   变量类型后置  

-   常量  
    -   声明  
        -   const 变量名 = 值  
        -   没有确定类型,通过上下文自动确定  

-   if else  
    -   条件无括号,语句大括号  
    
-   循环 只有for  
    -   条件三段均可省略,没有条件即为死循环  
    -   continue break  

-   switch  
    -   每个case无需break  
    -   取代if else : switch后不加东西,case后加条件  

-   切片  
    -   可变长度的数组  
    -   原理:存储长度+容量+指针  
    -   创建  
        -   s := make([]string, 3)  
        -   s := string{"1", "2"}  
    -   修改  
        -   切片  [:]
        -   s = append(s, "1")传入数组  

-   map(哈希/字典)  
    -   创建  
        -   变量名 := make(map[key类型]value类型)  
    -   修改  
        -   delete(m, "one")  
    -   查询  
        -   key, ok := m["unknow"]  
        
-   range  
    -   使用range遍历  
        -   slice:下标 值 (不需要的用_)  
        -   map:键 值  

-   函数  
    -   func 函数名(参数 参数类型)(返回值 返回值类型)  
    -   一般为多个返回值,最后的值为错误信息  

-   指针  
    -   对传入的参数进行修改 
    -   * &

-   结构体(对象)  
    -   带类型的字段的集合  
    
-   错误处理  
    -   函数返回值加入 error类型  

-   字符串  
    -   中文字符串长度不等于文字数
    -   格式化fmt.Printf()  
        -   %v 打印变量的值  
        -   %+v %#v 更详细的信息  
        -   %.2f 保留两位的浮点数  

-   json处理  
    -   struct每个字段的首字母大写  
    -   json.Marshal(a)  

-   时间处理  
    -   现在的时间,格式化t.Format("2006-01-02 15:04:05"),时间差t2.Sub(t),时间戳now.Unix()  
    
-   数字解析 “strconv”包  
    -   Atoi  

-   defer延迟函数,FILO  

-   go goroutines 启动“子线程” 处理并发