![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
No_Game_No_Life_
这个作者很懒,什么都没留下…
展开
-
深入理解Go——反射reflect
文章目录反射使用常见场景反射原理反射的基本函数反射使用常见场景需要反射的 2 个常见场景:有时你需要编写一个函数,但是并不知道传给你的参数类型是什么,可能是没约定好;也可能是传入的类型很多,这些类型并不能统一表示。这时反射就会用的上了。有时候需要根据某些条件决定调用哪个函数,比如根据用户的输入来决定。这时就需要对函数和函数的参数进行反射,在运行期间动态地执行函数。在讲反射的原理以及如何用之前,还是说几点不使用反射的理由:(1)与反射相关的代码,经常是难以阅读的。在软件工程中,代码可读性也是一原创 2020-10-26 19:08:12 · 435 阅读 · 0 评论 -
深入理解Go——unsafe
文章目录Go指针和unsafe.Pointerslice与unsafe.Pointer总结unsafe.PointerGo指针和unsafe.PointerGo 语言的指针相比 C 的指针有很多限制,是为了享受指针带来的便利,又避免了指针的危险性。比如Go的指针不能进行数学运算a := 5p := &ap++p = &a + 3上面的代码将不能通过编译,会报编译错误:invalid operation,也就是说不能对指针做数学运算。不同类型的指针不能相互转换原创 2020-10-26 10:48:33 · 174 阅读 · 0 评论 -
深入理解Go——context(2)
文章目录结构体emptyCtxcancleCtxtimerCtxvalueCtx结构体emptyCtx源码中定义了 Context 接口后,并且给出了一个实现:type emptyCtx intfunc (*emptyCtx) Deadline() (deadline time.Time, ok bool) { return}func (*emptyCtx) Done() <-chan struct{} { return nil}func (*emptyCtx)原创 2020-10-20 15:52:47 · 227 阅读 · 0 评论 -
深入理解Go——context(1)
文章目录引入:context有什么作用context 在 Go server里的作用context在实际项目中如何使用传递共享数据取消Goroutine防止goroutine泄漏context包Context引入:context有什么作用Go 1.7 标准库引入 context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含goroutine 的运行状态、环境、现场等信息。context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k原创 2020-10-09 20:27:09 · 300 阅读 · 0 评论 -
深入理解Go——interface
文章目录Go接口iface和eface值接受者和指针接受者的区别interface实现多态Go接口非侵入式的接口在Java中,派生类需要明确的声明它实现了某一个接口,并且需要实现借口中所有的函数。而在Go中,采用的是非侵入式的接口,不需要显式声明,只需要实现接 口定义的函数,编译器自动会识别。动态语言的便利Java和Go都是静态语言,在编译期间能发现类型不匹配的错误,不像动态语言,需要运行到那一行代码的时候才会报错。但是,Go实际上作为现代静态语言,是有后发优势的,它引入了动态语言的便原创 2020-09-30 18:09:20 · 443 阅读 · 0 评论 -
深入理解Go——map
文章目录map内存模型map哈希寻址map扩容map内存模型在map.go下,是这样定义map的:// A header for a Go map.type hmap struct { // Note: the format of the hmap is also encoded in cmd/compile/internal/gc/reflect.go. // Make sure this stays in sync with the compiler's definition. count原创 2020-09-30 16:59:11 · 334 阅读 · 0 评论