## 實例
~~~
package main
import (
"fmt"
"reflect"
)
//結構體
type User struct {
Id int
Name string
Age int
}
//綁定方法
func (u User) Hello() {
fmt.Println("Hello User!")
}
//反射操作
func Info(o interface{}) {
//獲取目標對象信息
t := reflect.TypeOf(o)
//獲取Name,也就是對象類型
fmt.Println("傳入的對象類型:", t.Name())
//獲取對象的值信息
v := reflect.ValueOf(o)
fmt.Println("字段:===========================")
//遍歷出所有字段
//NumField()獲取對象有幾個字段
for i := 0; i < t.NumField(); i++ {
//取每個字段
f := t.Field(i)
//通過interface()可以取具體字段對應的值
val := v.Field(i).Interface()
fmt.Printf("%s:%v=%v\n", f.Name, f.Type, val)
}
fmt.Println("方法:============================")
for i := 0; i < t.NumMethod(); i++ {
m := t.Method(i)
fmt.Printf("%s:%v\n", m.Name, m.Type)
}
}
func main() {
u := User{1, "Mr.Sun", 18}
Info(u)
}
~~~
- 一、數組
- 二、切片
- 三、copy
- 四、MAP
- 五、結構體
- 六、結構體參數
- 七、面向”對象“
- 1、匿名字段
- 2、方法
- 3、包和封裝
- 4、接口
- 5、異常處理
- 八、Json
- 九、文件操作
- 1、寫文件
- 2、讀取文件內容
- 3、拷貝文件
- 十、反射
- 1、查看類型,字段和方法
- 2、查看匿名字段
- 3、修改基本類型的值
- 4、修改結構體的值
- 5、調用方法
- 十一、并發編程
- 1、并行和并發
- 2、協程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定時器
- 8、select
- 9、協程同步鎖
- 十二、socket編程
- 十三、Http編程
- 十四、并發爬蟲和數據處理
- 1、簡易爬蟲實例
- 2、并發爬取圖片
- 3、讀文件中的數據
- 4、數據清洗
- 其他
- 1、推薦文章