后端青训营Day1 | 青训营笔记

65 阅读2分钟

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

太哈人啦! 这几天在唠嗑群看各位大佬组队的自我介绍, 怎么都这么厉害啊! 没事, 还是写点笔记吧, 我只要能比自己有进步就好了~

1. 变量声明

Go语言的变量声明标准格式为:var 变量名 变量类型

Go语言还支持批量变量声明, 能稍微省去写几个var关键字

var (
  a string
  b int
  c bool
  d float32
)

关于变量初始化, Go语言不存在未初始化的变量. 如果没有指定值, 变量会被初始化成该类型的默认值.

如果想要忽略某个变量的值, 可以使用 _ 表示一个匿名变量. 匿名变量不占用命名空间, 不会分配内存, 也不存在重复声明的问题.

而常量在定义的时候必须赋值.

批量声明常量时, 如果省略了值, 则表示和上面一行的值相同. 以下代码表示n2, n3的值都为100.

const (
  n1 = 100
  n2
  n3
)

2. 常量计数器

iota 是go语言的常量计数器, 使用 iota 定义枚举时很有用.

一些示例:

const (
  n1 = iota //0
  n2        //1
  _         //跳过
  n4        //3
)
​
const (
  n1 = iota //0
  n2 = 100  //100 插队
  n3 = iota //2
  n4        //3
)
​
const n5 = iota //0

3. 数据类型

Go的数据类型分四大类:

基础类型(basic type):包括数字(number)、字符串(string)和布尔型(boolean)

聚合类型(aggregate type):数组(array)和结构体( struct)

引用类型(reference type):引用是一大分类,其中包含多种不同类型,如指针( pointer),slice,map,函数( function),以及通道(channel)

接口类型(interface type)

4. 流程控制

Go语言的流程控制感觉就很简单, 而且没有什么花样, 这样其实也减少了代码风格冲突.

if else

if 表达式1 {
  分支1
} else if 表达式2 {
  分支2
} else{
  分支3
}

for

for 初始语句;条件表达式;结束语句{
   循环体语句
}

range

func main() {
    var a = [...]string{"北京", "上海", "深圳"}
​
    for index, value := range a {
        fmt.Println(index, value)
    }
    
    scoreMap := make(map[string]int)
    scoreMap["张三"] = 90
    scoreMap["小明"] = 100
    scoreMap["娜扎"] = 60
    for k, v := range scoreMap {
        fmt.Println(k, v)
    }
}