
golang
JaysenLeo
挖粪涂墙,星辰大海
展开
-
Golang 之 指针(一)
golang的指针不能像C中一样进行计算,例如获取数组的头指针,然后顺着头指针往下增加,依次获取数组的各个值。golang的指针不知道其自身的size,也就不能进行加减运算package mainimport "fmt"func main () { var name = "Lee" // 同C语言,用 & 取地址 var p_name ...原创 2018-07-08 10:25:57 · 379 阅读 · 0 评论 -
Golang 之 协程 goroutine(二)
抢占式多任务处理计算机只有一个处理器,宏观上,我们却可以看到数以百计的线程正同时运行在机器上,这就是抢占式多任务处理的效果,通过操作系统内核通过对线程的调度(调度器作为内核的一部分),将时间切片,分成一段段的时间片。这些时间间隔以毫秒为精度且长度并不固定。针对每个处理器,每个时间片仅服务于单独一个线程。线程的迅速执行给我们造成了它们在同时运行的假象。我们在两个时间片的间隔中进行上下文...原创 2018-08-01 21:32:01 · 718 阅读 · 0 评论 -
Golang 之 协程 goroutine(五)
Golang 的通道选择器 可以同时等待多个通道操作。 Go 协程和通道以及选择器的结合是 Go 的一个强大特性。// Go 的_通道选择器_ 让你可以同时等待多个通道操作。// Go 协程和通道以及选择器的结合是 Go 的一个强大特性。package mainimport "time"import "fmt"func main() { chan1 := ...原创 2018-08-01 21:32:57 · 387 阅读 · 0 评论 -
Golang 之 协程 goroutine(四)
通道方向 : 当使用通道作为函数的参数时,可以指定这个通道是不是只用来发送或者接收值。这个特性提升了程序的类型安全性。func ping(pings chan<- string, msg string) { pings <- msg // 若尝试运行如下语句,发送通道数据,将会报错 // invalid operation: <-ping...原创 2018-08-01 21:32:49 · 464 阅读 · 0 评论 -
Golang 之 协程 goroutine(一)
Go语言的流行,往往逃避不开 goroutine和channel在并发(并行)处理上的优秀解决方案,goroutine是Go语言并行设计的核心。 - goroutine是一种比线程更轻量的实现,十几个goroutine可能在底层就是几个线程。 - 执行goroutine时候,go语言立即返回,接着执行剩余的代码,goroutine不阻塞主线程。 - channel就像一个管...原创 2018-07-06 01:32:02 · 496 阅读 · 0 评论 -
Golang 之 面向对象继承(四)
并没有为PhonePlus 实现接口,仅仅为Phone实现了接口,不过PhonePlus里面嵌入了Phone的一个内部类型,也是可以通过接口调用函数Call来调用到Communicate method。在main函数,发现PhonePlus的methods set 里面包含了Communicate()package mainimport "fmt"type Phone st...原创 2018-08-01 21:30:04 · 622 阅读 · 0 评论 -
Golang 之 面向对象继承(三)
对于结构体来说,一个是 Phone类型,实现了PhoneFunction接口,这种情况下,无论是Phone还是*Phone都是可以成为接口调用的package mainimport "fmt"type Phone struct { OS string Net string}type PhoneFunction interface { Communi...原创 2018-08-01 21:29:53 · 306 阅读 · 0 评论 -
Golang 之 面向对象继承(二)
对于结构体来说,一个是 Phone类型,一个是Phone的指针类型,他们都有Call方法,这种情况下,方法也是继承package mainimport "fmt"type Phone struct { OS string Net string}func (p *Phone) Call() { fmt.Printf("...呼叫中 \n")}f...原创 2018-08-01 21:29:37 · 297 阅读 · 0 评论 -
Golang 之 面向对象继承(一)
对于结构体来说,Go中使用一种叫做”组合”的方法来实现继承package maintype Phone struct {}func (p *Phone) Call() { println("...呼叫中")}// 组合type Mi8 struct { Phone}func main() { var p Mi8 p.Call()...原创 2018-08-01 21:29:16 · 343 阅读 · 0 评论 -
Golang 之 面向对象type ,扩张系统已有类型
目录 main包package mainimport ( . "../../queue" . "fmt" )func main() { q := Queue{1,2,3,4} q.Push(5) q.Pop() q.Pop() q.Pop() Println(q.IsEmpty())}-queu...原创 2018-08-01 21:31:26 · 964 阅读 · 0 评论 -
Golang 之 面向对象struct ,定义结构体方法(二)
package mainimport "fmt"type treeNode struct { value int left, right * treeNode}func (node treeNode) print() { fmt.Println(node.value)}// 说明其传值func (node treeNode) setNode(val...原创 2018-07-22 00:41:01 · 2405 阅读 · 0 评论 -
Golang 之 面向对象struct (一)
golang语言仅支持封装,不支持继承和多态,继承和多态要做的事,可以用面向接口来做,只有struct没有classpackage mainimport "fmt"type treeNode struct { value int left, right * treeNode}func createNode(val int) *treeNode { ...原创 2018-07-08 16:41:27 · 442 阅读 · 0 评论 -
Golang 之 协程 goroutine(三)
“通道” 是连接多个 Go 协程的管道。 可以从一个 Go 协程, 将值发送到通道,然后在别的 Go 协程中接收。package mainimport "fmt"func main() { // 使用 `make(chan val-type)` 创建一个新的通道。 // 通道类型就 val-type 是他们需要传递值的类型。 // 此处创建名为 mes...原创 2018-08-01 21:32:30 · 687 阅读 · 0 评论