
go
haha++
哈哈
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
vscode 配置 go 开发环境
VScode and go2019 vscode 配置 go 开发环境起因由于墙的原因,更新 vscode go 开发环境各种FAILED,网上看了很多材料没解决。ctrl+shctrl+p,输入go:install/update toolsInstalling 16 tools at /home/sfw/go/bingocodegopkgsgo-outlinego-symbol...原创 2019-04-03 08:14:38 · 1794 阅读 · 0 评论 -
微服务框架 micro 源码分析 - 中间件的加载
一个限流中间件的例子func TestRateClientLimit(t *testing.T) { b := ratelimit.NewBucketWithRate(float64(limit), int64(limit)) //... c := client.NewClient( // set the selector client.Selector(s...原创 2019-07-04 18:26:33 · 667 阅读 · 1 评论 -
go 反射机制
反射是什么静态类型语言的程序要编译成可执行文件才能执行,在编译阶段变量类型信息(元信息)被擦除,只剩地址和长度.要想访问元信息需要通过特殊的办法–反射.而动态类型的语言通过解释执行的,源码一直存在,所以能轻松的访问到元信息.Go 语言提供了一种机制在运行时更新变量和检查他们的值,调用它们的方法,但是在编译时并不知道这些变量的具体类型,这称为反射机制.<< Go 程序设计语言 &...原创 2019-06-17 19:20:18 · 437 阅读 · 0 评论 -
go 错误处理
“可对值进行编程,而错误是值,因此可对错误进行编程.错误不像异常,因为错误没有什么特别之处,而未处理的异常可能导致程序崩溃.”–Rob Pike错误的分类和处理机制广义错误(errors) 非期望的行为未捕获错误(untrapped error 异常) 未知错误,未定义的错误类型 --> 段错误可捕获错误(trappend error) 已知错误,预定义的错误类型...原创 2019-06-03 20:19:03 · 1617 阅读 · 0 评论 -
go 性能测试
例子package main//func FibRaw(x int) int { if x == 0 { return 0 } else if x <= 2 { return 1 } else { return FibRaw(x-2) + FibRaw(x-1) }}//var cache = make(map[int]int)func FibCach...原创 2019-05-29 18:01:32 · 1460 阅读 · 0 评论 -
go interface 类型用法
接口定义接口实现接口零值 nil表达式实现接口的方法,可以赋值给接口变量实例赋值给接口指针赋值给接口接口赋值给接口T 型值方法集 (t T)*T 型值方法集 (t T) 和 (t *T)判等,可赋值,可判等类型断言 t = x.(T)断言是具体类型断言是接口类型断言失败,崩溃断言空接口值,肯定失败,崩溃断言返回二元组,如果成功返回...原创 2019-05-22 13:27:04 · 2459 阅读 · 0 评论 -
go 单元测试
基础测试简单快速,可用于测试驱动开发表格测试精心购键的一组输入,包含关注点,特别是边界条件是否满足随机测试随机输入扩展测试的覆盖范围.预期的结果的获得.算法清晰但性能不佳的函数来得到可信结果,再和被测试函数的输出比较构建符合特定规律的输入,就能知道结果,再和被测函数的输出比较例子源码文件//memoize.gopackage memoizeFibtype Fibfun...原创 2019-05-25 12:35:33 · 586 阅读 · 0 评论 -
go 测试
测试 ( go test )自动化测试 ( 参数 -run=. )单元测试 ( 测试对象的基础元件 )集成测试 ( 测试对象的部件的关系 )功能测试 ( 测试对象的功能的正确 )白盒测试 ( 测试对象的内部 )黑盒测试 ( 测试对象的外部 )基础测试 ( 测试对象的一个特定的输入输出 )表格测试 ( 测试对象的一组特定的输入输出 )随机测试 ( 测试对象的一组随机的输入输出...原创 2019-05-24 20:23:32 · 702 阅读 · 0 评论 -
go chan 类型用法
引用类型零值 nil<发送/写>型 chan<-<接收/读>型 <-chan双向型 chan构造/初始化 make()关闭 close()可作左值判等 ==<发送/写>数据 chan <- send_date<接受/读>数据 recv_data := <- chanchan 关闭或有数据,读操作不阻塞...原创 2019-05-10 23:39:29 · 4030 阅读 · 0 评论 -
go tool 用法
go version go1.12.4 linux/amd64开发run 编译并运行build 编译clean 清楚fmt 格式化bug 报告bugtest 测试generate 生成文档模块和包mod 模块管理list 显示模块fix ...原创 2019-05-15 14:42:52 · 1009 阅读 · 0 评论 -
go map 类型用法
零值nil字面量make()rangelen()例子package mainimport ( "fmt")func main() { //零值nil var m0 map[int]int //字面量 var m1 = map[int]int{0: 10, 2: 12, 4: 14} //make() var m2 = make(map[int]int,...原创 2019-05-09 15:14:06 · 922 阅读 · 0 评论 -
go struct 类型用法
值类型零值各字段的零值组成字面量具名字段嵌入字段/匿名字段嵌入字段和具名字段同名时,带上类型名嵌入字段和具名字段不同名时,不带类型名值方法指针方法package mainimport "fmt"type data struct { id int name string addr string}type family struct { father s...原创 2019-05-13 22:58:36 · 1059 阅读 · 0 评论 -
go 数组和切片
go 数组和切片数组长度是固定的,类型包括长度(如: [3]int ).切片长度是变化的,类型不包括长度(如: []int ),可以用 make 函数构造.例子代码package mainimport "fmt"func main() { var arr1 = [3]int{0, 1, 2} var arr2 = [...]int{0, 1, 2, 3} fmt.Pr...原创 2019-04-30 22:16:08 · 205 阅读 · 0 评论 -
go slice 类型用法
[//注释] <> (go 切片用法)字面量make()append()copy()rangelen()cap()nil ==例子package mainimport ( "fmt")func main() { //字面量 var s0 []int //s0: nil var s1 = []int{0, 1, 2} //...原创 2019-05-05 15:13:14 · 556 阅读 · 0 评论 -
go 切片的内存预分配算法
一个例子看 go slice 的内存预分配例子package mainimport "fmt"func main() { s := []int{} fmt.Println("len", "cap") for i := 0; i < 1; i++ { s = append(s, i) fmt.Printf("%2d%4d\n", len(s), cap(s)) }...原创 2019-04-16 16:12:16 · 898 阅读 · 0 评论 -
go module
Go module环境变量 GO111MODULEGO111MODULE值模式off<GOPATH mode>on<module-aware mode>auto/空<GOPATH mode>在 GOPATH/src 之内. <module-aware mode> 在 GOPATH/src 之外 而且 本目...原创 2019-06-30 14:45:54 · 915 阅读 · 0 评论