go语言基础|青训营笔记

107 阅读2分钟

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

5)switch

基本语法

在讲述if-else时已经提到,如果有多个判断条件,Go语言中提供了Switch-Case的方式。如果switch后面不带条件相当于switch true

fallthrough使用方法

默认情况下,case满足执行后会进行break,后面case即使满足条件也不再循环,如果想继续执行,则需要添加fallthrough

多条件匹配

如果同一个条件满足,也可以这样罗列到同一条件,相当于或条件

判断接口(interface)类型

空接口

后面我们会讲到接口,通过switch可以对type进行判断,获取接口的真实类型。

我们定义了一个空接口:

var value interface{}

同时使用switch来判断类型:

switch q:= value.(type) {

由于空接口没有内容,所以类型为nil,触发了default:

value is of type: <nil>

获取实际类型 例子:让空接口拥有实际的值

package main

import "fmt"

func valueType(i interface{}) {
    switch q:= i.(type) {
       case bool:
       fmt.Println("value is of boolean type")
       case float64:
       fmt.Println("value is of float64 type")
       case int:
       fmt.Println("value is of int type")
       default:
       fmt.Printf("value is of type: %T\n", q)

   }
}

func main() {
    person := make(map[string]interface{}, 0)

    person["name"] = "Alice"
    person["age"] = 21
    person["height"] = 167.64

    fmt.Printf("%+v\n", person)

    for _, value := range person {
        valueType(value)
    }
}

6)数组

一维数组

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。

数组元素可以通过索引(位置)来读取(或者修改),索引从О开始,第一个元素索引为0,第二个索引为1,以此类推。

声明数组

声明需要指定元素类型及元素个数:var variable_name [size] variable_type

例如: var balance [10] float32

初始化数组

定长数组:

var balance = [5]float32{1000.0,2.0,3.4,7.0,50.0}

balance :=[5]float32{1000.0,2.0,3.4,7.0,50.0}

不定长数组:

var balance =[...]float32{1000.0,2.0,3.4,7.0,50.0}

balance :=[...]float32{1000.0,2.0,3.4,7.0,50.0}

通过指定下标来初始化元素:

balance :=[5]float32{1:2.0,3:7.0}

访问数组元素

数组元素通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。