【青训营课程】第一节 Go 语言上手 - 基础语言 | 青训营笔记

64 阅读3分钟

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

  1. Go是一门强类型语言,变量类型包括整型、字符串、浮点型、布尔型等。
  2. 变量声明有两种方式,一种是通过语句var var_name var_type = var_value,其中可以省略var_type(自动推导)或var_value(后续赋值),另一种是通过var_name := var_value。
  3. 常量声明方式与变量类似,将var换成const即可;常量没有确定 的类型,会根据上下文自动确定类型。
  4. If语句结构与C语言类似,但条件表达式不加括号,多个表达式用分号隔开;if必须加大括号,不可省略。
  5. 循环语句只有for,没有while和do while。for后不加任何条件则为死循环,中途可用break跳出;for后面可用C语言经典的for结构,即“i=0; i<n; i++”;可使用continue语句跳出当次循环。与if语句类似,for后表达式不加括号。
  6. switch语句可使用任意变量类型,条件同样不加括号,且最多只会进入一个case中,不需要额外写break语句。不在switch后面加任何变量,在case内写条件分支,甚至可以取代if else结构,如:
t := time.Now()
switch {
    case t.Hour() < 12:
	fmt.Println("It's before noon")
    default:
	fmt.Println("It's after noon")
}
  1. 切片操作可以任意更改长度,用make语句创建切片,如s := make([]string, 3),则创建一个长度为3的字符数组。append操作可以追加元素,如s = append(s, 'n'),则在s末尾追加元素'n'。切片操作类似Python,但不支持负数索引。
  2. map在其他语言中可称为哈希或字典,可用make创建一个空map,需要定义key和value的类型,如m := make(map[string]int),则key的类型被指定为string,value的类型被指定为int。
  3. 对于一个切片或map,可用range的方式进行遍历,如for k, v := range m{……},其在遍历数组时,会返回两个值,第一个是索引,第二个是索引对应值。
  4. 定义函数时,用func关键字,形参类型和返回值类型都是后置的;常返回两个值,第一个为目标结果,第二个为错误信息。
  5. 支持指针,主要用于修改传入的参数,例如函数参数传址引用,在类型前加上*;在函数体内操作变量时,变量名前加上*;在其他地方引用该函数时,传入参数前加上&。
  6. 支持结构体,如:
type user struct {
   name     string
   password string
}

可以用结构体的名称初始化变量,也可以用类似于a := user{name: 'XXX', password: 'xxx'}这样的键值对指定初始值。定义结构体方法,如:

func (u user) checkPassword(password string) bool {
   return u.password == password
}

这样就可以按a.checkPassword("xxx")这样调用了。 13. 在标准库的fmt包有类似于C语言的Printf函数,但不同的是可使用%v打印任何类型的变量,用%+v或%#v打印详细结果。