摘要: 主要内容: 由对象获取反射类型,由对象获取反射值 由反射值获取反射类型 反射值重新转换成对象 遍历字段 遍历方法 易知go语言的struct是值类型,如果修改需要使用引用传递。反射修改值类型,要获取其指针的值类型。此方法适用于int string 以及struct。 反射调用的注意点: 类方法要大写,以便能被其它包,也就是reflect包调用。小写的方法可以由反射查询,但是不能调用。 要获取... 阅读全文
posted @ 2019-12-19 19:35 离地最远的星 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 周期定时器 func main() { timer := time.NewTicker(1 * time.Second) //NewTicker是周期定时器,NewTimer是普通定时器只能用一次 for { <-timer.C fmt.Println("good") } } 定时器 time.Sleep(time.Secon... 阅读全文
posted @ 2019-12-19 19:34 离地最远的星 阅读(1102) 评论(0) 推荐(0) 编辑
摘要: go语言中的包 一个目录下的统计文件归属一个包,package的声明要一致 package声明的包和对应的目录名可以不一致,但习惯上还是可以写成一直的 包可以嵌套 同包下的函数不需要导入包,可以直接使用 main包,main函数所在的包,其他包不可以引用 点操作 import ( . "fmt" ) func main(){ println("haha") //使用... 阅读全文
posted @ 2019-12-19 19:33 离地最远的星 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 闭包对闭包外的环境引入是直接引用,编译器监测到闭包,会将闭包饮用的外部变量分配到堆上 package main func fa(a int) func(i int) int { return func(i int) int { fmt.println(&a) a = a + i return a } } func main() ... 阅读全文
posted @ 2019-12-19 19:33 离地最远的星 阅读(73) 评论(0) 推荐(0) 编辑
摘要: const定义在main函数里面就是局部常量 package main import "fmt" func add(a int) func(int) int { return func(i int) int { fmt.Println(&a) a += i return a } } func main() { cons... 阅读全文
posted @ 2019-12-19 19:33 离地最远的星 阅读(81) 评论(0) 推荐(0) 编辑
摘要: ## 创建巨大字符串时性能提升的方法 package main import ( "bytes" "fmt" ) func test() string{ var b bytes.Buffer b.Grow(1000) //将buffer的容量提升到1000,然后写入到字符中 for i :=0;i<1000;i++{ b.WriteS... 阅读全文
posted @ 2019-12-19 19:33 离地最远的星 阅读(171) 评论(0) 推荐(0) 编辑
摘要: package main import "fmt" type optionClient func(*options) func setAge(a int) optionClient { return func(o *options) { o.Age = a } } func setSex(s int) optionClient { return func(o ... 阅读全文
posted @ 2019-12-19 19:31 离地最远的星 阅读(236) 评论(0) 推荐(0) 编辑
摘要: package main import ( "fmt" "runtime" ) func test() { defer fmt.Println("ccccccccc") //只要成功注册了无论是return 还是goexit都会被调用 runtime.Goexit() //退出函数所在当前go程 defer fmt.Println("dddddddddd... 阅读全文
posted @ 2019-12-19 19:31 离地最远的星 阅读(98) 评论(0) 推荐(0) 编辑
摘要: go语言在for循环中遍历的临时变量地址是一样的 func main() { //SetLogConfToEtcd() for i := 0; i < 5; i++ { a := i fmt.Printf("%p\n", &i) //可以看到i的地址都是一样的,也就是说i是复用的 fmt.Printf("%p\n", &a) //... 阅读全文
posted @ 2019-12-19 19:30 离地最远的星 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 单行模式(?s:(.?))万能用法尽量匹配少的文本,最关键的是可以匹配换行的文本,直接写.?不能匹配\n package main import ( "fmt" "regexp" ) func main() { str := "3.14 23.22 abc a7c 2.43 mfc cat 8ca azc cba" //解析,编译正则表达式 ret :... 阅读全文
posted @ 2019-12-19 19:29 离地最远的星 阅读(476) 评论(0) 推荐(0) 编辑