反射基本介绍
package main
import (
"fmt"
"reflect"
)
func reflectTest(a interface{}) {
//1.通过反射获取传入变量的type
//先获取reflect.Type
rTyp := reflect.TypeOf(a)
fmt.Println("rTyp = ", rTyp)
//2.获取到reflect.value
rVal := reflect.ValueOf(a)
fmt.Printf("rVal = %v, type = %T\n", rVal, rVal)
val := rVal.Int()
fmt.Printf("Val = %v, type = %T\n", val, val)
//将rVal转成interface
iv := rVal.Interface()
//将interface{}通过断言进行转换
num := iv.(int)
fmt.Printf("num = %v, num = %T\n", num, num)
}
func main() {
num := 12
reflectTest(num)
}
切片-slice
# 二者等价
# 1.先声明一个1024容量数组,
bs := [1024]byte{} //申明一个数组,容量1024
data := bs[:] //切片--容量1024
# 2.直接申明一个1024容量数组并make后使用
data := make([]byte, 1024) // 切片--容量1024