Go语言
Go语言相关blog,现已停止更新。
iamzxu
现Rustacean一枚,机甲迷,尤其是全金属狂潮的强弩(prprpr)
展开
-
Golang 并发里的WaitGroup
package mainimport ( "fmt" "time")func main() { var x int go func() { x = (x + 8) * 9 }() time.Sleep(2 * time.Second) fmt.Println(x)}72在上面的代码中,我们声明了一个变量,并开启了一个goroutine(协程),协程会对变量的值进行修改。但是我们为了防止提前退出,特意睡眠(sleep)了两秒。最后我们打印修改后变量的值。通道(.原创 2020-10-05 18:58:09 · 474 阅读 · 0 评论 -
Golang defer的一个坑
试着猜一下:下面这个例子的运行结果是什么?package mainimport "fmt"func main() { fmt.Println(test_function())}func test_function() (value int) { defer func() { value++ }() return 0}虽然在返回前defer就把value的值修改了,但是defer执行完后执行的是return,所以返回的应该还是0?让我们看下输出1WT.原创 2020-10-05 18:58:23 · 116 阅读 · 0 评论 -
Golang new和make有啥区别?
对比newfunc new(Type) *Typevalue_bool := new(bool) // falsevalue_int32 := new(int32) // 0value_float32 := new(float32) // 0.0value_string := new(string) // ""可以看到,对于new,会创建每个类型所对应的零值。但还要注意的是,new会返回一个指针,所以在访问数据之前,需要先将其解引用。makefunc make(Type原创 2020-10-05 18:58:38 · 391 阅读 · 0 评论 -
Golang 错误处理
FBI WRINING文章会牵扯到接口部分的内容,没有接触过的读者建议先去学习。定义在go中,错误被定义成一个接口(interface)type error interface { Error() string}使用最简单的使用错误的方法就是用函数创建一个错误简易版本package mainimport ( "errors" "fmt")func main() { value := false text, err := isu(value)原创 2020-08-25 16:48:17 · 293 阅读 · 3 评论 -
Golang defer
引入不多说,上代码package mainimport "fmt"func main() { fmt.Println("a") defer func() { fmt.Println("d") fmt.Println("e") }() defer fmt.Println("c") defer fmt.Println("b")}运行结果abcde解析只看上面的内容可能很难理解,但其实defer就是在函数即将返回时执行其后面的语句。但是这任然不能解释上面内容的原创 2020-08-23 18:43:14 · 156 阅读 · 2 评论