这是我参与「第五届青训营 」笔记创作活动的第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}
访问数组元素
数组元素通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。