Go语言入门二 | 青训营笔记

46 阅读3分钟

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

go语言基本语法和数据类型

  1. 格式化字符串Sprintf的使用方法—其他转为字符串

  2. 标准Api文档库

  3. 若干数据类型及其默认值:0,false,“”,nil(记一下)

  4. 变量声明的3种方式:

    1. var 标识符 type—若没有初始化就是默认值
    2. var 标识符 = value
    3. := 局部变量的初始化
  5. :=的注意事项

    1. 局部变量的声明
    2. 声明就必须使用(全局变量没有这个限制)
    3. a, b = b, a —交换a与b的值
    4. ‘-’ 接收没有用处的局部变量

go 语言常量、基本数据类型、字符串转化

  1. 常量使用const定义,且可以使用一些内置函数len()cap()unsafe.Sizeof()

    1. iota:可以被编译器修改的一种特殊常量(记录const定义的常量的数量,可以被用作枚举变量)
  2. 格式化函数Printf的使用与fmt包中的格式化标准息息相关

  3. 字符串:由一个个字符拼接而成(不可修改)

    1. 用双引号标识
    2. 用反引号标识(原生字符串的形式,防止攻击)
  4. 基本数据类型的转换:()

  5. string与基本数据类型

    1. string→基本数据类型:int strcona.ParseInt(str, base, bitSize)

    2. 基本数据类型→string:

      1. strcona.Iota(num)
      2. func Sprintf(format string …)
  6. Scanning的Scan和Sscan家族

指针、运算符和位运算

  1. 指针变量

    **var a = 10
    var ptr *int  //定义一个int型的指针
    ptr = &a;     //a的地址赋值给指针ptr
    fmt.Printf("%d", *ptr) //访问存储在地址中的值
    
    1.空指针的值输出为0,但其实为nil
    2.两个指针变量ptr1和ptr2,ptr1 = ptr2,若修改ptr2的值,ptr1的值也会被修改
    	ptr = &num
    	*ptr = 10      //此时会将num的值修改为10**
    
  2. 遇到暂时没有使用的包,可以在报名前面加上’_’以示忽略,防止报错

  3. 值类型和引用类型

    1. 值类型包括:基本数据类型 int系统,float系列,bool,string,struct和结构体。
    2. 引用类型:指针,slice切片,map,管道chan,interface等
    3. 值类型存储在栈中,引用类型存储在堆中
  4. 标识符命名规范

    1. 变量名、函数名、常量名首字母大写,则可以被导出,否则不可以
    2. 遵循驼峰法
  5. 运算符

    1. 算术运算符:+,-,*,/,%,++,- -

      1. /:向下取整
      2. 自增,自减独立成行且不存在++i或者- -i
    2. 关系运算符:==, ! =, >, <, > =, < =

    3. 逻辑运算符:&&, ||, !,存在短路

    4. 不存在三元运算符,用if完成

    5. 位运算符:&, |, ^, <<, >>,补码运算

  6. 键盘输入:Scan家族的标准输入,Sscan家族的字符串输入

    package main
    import "fmt"
    fun main(){
            var name string
            var age int
            var mf bool
    
    fmt.Println(请输入姓名,年龄,性别)
      //方式一
    fmt.Scanln(&name)
    fmt.Scanln(&age)
    fmt.Scanln(&mf)
    //方式二
    fmt.Scanf("%s %d %f %t",&name,&age,&mf)
    //方式三
      fmt.Scan(&name,&age,&mf)
    }
    
  7. 进制的输入输出:基本与c类似,Python中的进制转换及其方便

  8. 流程控制:if else

    1. }与else不分行
    2. 在if后面也可以声明变量,类似c/java中的int i = 0;
    3. if或者else后面即使只有一行也需要{}
    4. 判断闰年
      if year:= 2019;(year %4 ==0 && year %100 !=0)||year%400 == 0{ fmt.Println(year,"是闰年") } //直接