Go
学无止境丶
https://github.com/fwdhz998。深度学习的副产品就是广度学习。
展开
-
Go学习笔记(一)
Go 语言用途Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。原创 2017-09-28 18:07:50 · 317 阅读 · 0 评论 -
Go语言多线程爬取图片并保存:sync.WaitGroup
//使用golang中sync.WaitGroup来实现协程同步 package main import ( "fmt" "net/http" "io/ioutil" "time" "os" "sync" ) var waitGroup = new(sync.WaitGroup)原创 2018-06-11 22:02:17 · 1962 阅读 · 0 评论 -
Go并发
1.goroutinepackage mainimport( "fmt" "math" "sync")func sum(id int) { var x int64 for i := 0; i < math.MaxUint32; i++ { x+=int64(i) } fmt.Println(id,x)}fu原创 2017-11-21 16:58:38 · 384 阅读 · 0 评论 -
Go接口
1.接口定义接口是一个或多个方法签名的集合,任何类型的“方法集”中只要拥有与之对应的全部方法,就表示它 "实现"了该接口,无须在该类型上显式添加接口声明。所谓对应方法,是指有相同名称、参数列表 (不包括参数名)以及返回值。当然,该类型还可以有其他方法。• 接口命名习惯以 er 结尾,结构体。• 接口只有方法签名,没有实现。• 接口没有数据字段。• 可在接原创 2017-11-20 11:28:01 · 317 阅读 · 0 评论 -
Go学习笔记(五)
1.通常以 2 倍容量重新分配底层数组。在大批量添加数据时,建议一次性分配足够大的空间,以减少内存分配和数据复制开销。或初始化足够长的len 属性,改用索引号进行操作。及时释放不再使用的 slice 对象,避免持有过期数组,造成 GC 无法回收。s := make([]int, 0, 1)c := cap(s)for i := 0; i < 50; i++ {s =原创 2017-11-03 15:00:49 · 263 阅读 · 0 评论 -
Go学习笔记(四)
3.函数3.1函数定义3.2变参3.3返回值3.4匿名函数3.5延迟调用3.6错误处理1.函数是第一类对象,可作为参数传递。建议将复杂签名定义为函数类型,以便于阅读。package mainimport "fmt"func test(fn func() int) int { return fn()}type FormatFunc原创 2017-10-31 10:35:37 · 346 阅读 · 0 评论 -
Go学习笔记(三)
2.表达式1.保留字2.运算符3.初始化4.控制流if forrange switchgoto break continue1.初始化初始化复合对象,必须使用类型标签,且左大括号必须在类型尾部。 // var a struct { x int } = { 100 } // syntax error// var b []int = { 1原创 2017-10-31 10:04:45 · 713 阅读 · 0 评论 -
Go学习笔记(二)
1.多变量赋值时,先计算所有相关值,然后再从左到右依次赋值。ar s string // 全局变量没问题。func main() {i := 0 // Error: i declared and not used。 (可使⽤ "_ = i" 规避)}2.编译器会将未使用的局部变量当做错误。var s string // 全局变量没问题。func main() {i :=原创 2017-10-30 09:49:39 · 467 阅读 · 0 评论 -
Go搭建一个web服务器
如果你以前是php程序员,那么需要nginx,apache这些服务器;如果你以前是python程序员,可能需要tornadoGo不需要这些原创 2017-10-02 10:45:42 · 738 阅读 · 0 评论 -
Go并发设计
goroutine(极少的栈内存,比thread更易用、更高效、更轻便)runtime.Gosched()表示把CPU时间片让给别人,下次某个时候恢复执行该goroutine想要发挥多核处理器的并行,设置runtime.GOMAXPROCS(n)默认情况下,channel接受和发送数据都是阻塞的,除非另一端已经准备好,这样就使得goroutines同步变的更加的原创 2017-10-01 09:35:04 · 231 阅读 · 0 评论 -
Go通过select和channel结合实现异步IO
select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。 select随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。package mainimport "fmt"func main() { var c1, c2, c3 chan int ...原创 2018-06-13 13:58:05 · 4942 阅读 · 0 评论