go
文章平均质量分 53
quick刀斩乱麻
follow for more
展开
-
Go的面向对象
构造函数 returning value or pointer in Go constructor? 方法与接收器 方法与函数 面向过程中没有“方法”概念,只能通过结构体和函数,由使用者使用函数参数和调用关系来形成接近“方法”的概念。而Go中的方法是作用在接收器上的一个函数,因此是一种特殊类型的函数。 指针接收器与值接收器 指针接收器由于指针的特性,调用方法时,修改接收器指针的任意成员变量,在方法结束后,修改都是有效的。 当方法作用于非指针接收器时,Go语言会在代码运行时将接收器的值复制一份,原创 2021-08-13 16:03:47 · 74 阅读 · 0 评论 -
Go的escape analysis
1 堆与栈 For declared variables in Go, they need to be allocated as objects in memory where either in the heap or on the stack Stack frames: local storage space belonging to a function where stored objects are managed by the belonging frame's lifecycle a原创 2021-07-12 17:28:39 · 125 阅读 · 0 评论 -
Go的设计模式
工厂模式 package main import "fmt" // 产品接口 type Shape interface { draw() } //具体产品 type Rectangle struct { } func (Rectangle) draw() { fmt.Println("Draw Rectangle") } type Square struct { } func (Square) draw() { fmt.Println("Draw Square") } type Ci原创 2021-07-12 17:41:06 · 106 阅读 · 0 评论 -
Go的多线程
sync.Cond 用于协程的挂起和唤醒。sync.Cond基于互斥锁/读写锁,互斥锁sync.Mutex通常用来保护临界区和共享资源,条件变量sync.Cond用来协调想要访问共享资源的goroutine。sync.Cond通常用在多个goroutine等待,一个goroutine通知的场景。如果是一个等待,一个通知,使用互斥锁或channel就可以解决了。 Communicating Sequential Process 使用goroutine(一种运行在用户态的协程)和在goroutine之原创 2021-08-10 09:52:01 · 630 阅读 · 0 评论