## int操作和結構體操作
```
package main
import (
"fmt"
"reflect"
)
//對int反射
func reflectTest01(b interface{}) {
//1.獲取reflect.Type
rTyp := reflect.TypeOf(b)
? ? fmt.Printf("rType=%v\n", rTyp) //rType=int
//2.獲取reflect.value
rVal := reflect.ValueOf(b)
? ? fmt.Printf("rValue=%v rValue的類型是%T\n", rVal, rVal) //rValue=100 rValue的類型是reflect.Value
n2 := rVal.Int() + 2 //將reflect.value轉回int
? ? fmt.Println("n2=", n2) //n2 = 102
//將rval轉成interface{}
iv := rVal.Interface()
num2 := iv.(int)
? ? fmt.Println("num2=", num2)
}
//對結構體反射
func reflectTest02(b interface{}) {
//1.獲取reflect.Type
rTyp := reflect.TypeOf(b)
? ? fmt.Printf("rType=%v\n", rTyp) //rType=int
//2.獲取reflect.value
rVal := reflect.ValueOf(b)
? ? fmt.Printf("rValue=%v rValue的類型是%T\n", rVal, rVal) //rValue=100 rValue的類型是reflect.Value
//3.獲取變量對應的kind
//(1)rVal.Kind()
kind1 := rVal.Kind()
//(2) rTyp.Kind()
kind2 := rTyp.Kind()
? ? fmt.Printf("kind=%v kind=%v\\n", kind1, kind2) //kind=struct kind=struct
//將rval轉成interface{}
iv := rVal.Interface()
? ? fmt.Printf("iv=%v iv type=%T\n", iv, iv) //此時無法取出name age
value, ok := iv.(Student)
if !ok {
return //轉換失敗
? ? }
fmt.Printf("name%v age=%v\n", value.Name, value.Age)
}
type Student struct {
Name string
Age ?int
}
func main() {
num := 100
reflectTest01(num)
stu := Student{"Tom", 20}
reflectTest02(stu)
}
```
- 數據類型
- 數組array
- 切片slice
- 字符串string
- map
- 結構體struct
- 方法func
- 匿名結構體(繼承)
- 字段別名
- 接口interface
- 常量
- 基礎語法
- 循環for
- 遍歷
- 函數func
- defer
- 異常處理error
- 訪問范圍
- 包
- 類型斷言
- 文件
- 打開文件
- 讀取文件
- 寫文件
- 判斷是否存在
- 拷貝文件
- JSON
- 序列化
- 反序列化
- 命令行
- 雜項
- Windows下配置加速
- 相關鏈接
- 占位符
- 隨機數rand
- 單元測試
- goroutine
- 并發和并行
- 協程和主線程
- MPG模式
- 設置CPU數量
- 全局互斥鎖
- 管道
- 示例1
- 示例2
- select
- 異常捕獲
- 反射
- 示例
- 示例-改變值
- 網絡編程
- TCP編程
- 示例一
- redis