defer的边界
defer是以函数为边界的,也就是说,只有在当前函数将要退出的时候才会运行。
Nested channel select的返回
① 对于nested同一个channel select,如何想要层层返回,最好的方式就是直接close channel
package聽main import聽( "fmt" "time" ) func聽main()聽{ stopc聽:=聽make(chan聽int) go聽func()聽{ select聽{ case聽<-stopc: fmt.Println("stopc聽0") select聽{ case聽<-stopc: fmt.Println("stopc聽1") } fmt.Println("stopc聽2") } }() //聽stopc聽<-聽2 //聽stopc聽<-聽2 close(stopc) time.Sleep(time.Second聽*聽5) }Also SEE: Go Sandbox
Fork别人项目的正确姿势
比如,有一个项目『http://github.com/sirupsen/logrus』,你看他有点不爽想要改点东西。所以fork了一个新的项目『http://github.com/auxten/logrus』,但代码里会有很多『import "http://github.com/sirupsen/logrus/xxx"』
你直接去修改代码项目依旧会引用原版,pull request原作者又不能很快通过,急急急,这时候怎么办呢?
① go get别人代码,这里是聽
go聽get聽github.com/sirupsen/logrus② 给项目直接添加一个新的remote,指向你自己的repo,命令:
git聽remote聽add聽auxten聽git@github.com:auxten/logrus.git③ 创建新branch,就叫做aux吧,并且让这个branch指向这个remote。命令:
git聽checkout聽-b聽aux聽&&聽git聽branch聽-u聽auxten/master聽aux④ 最终的.git/config大概长这样:
[core] 聽聽聽聽repositoryformatversion聽=聽0聽 聽聽聽聽filemode聽=聽true 聽聽聽聽bare聽=聽false 聽聽聽聽logallrefupdates聽=聽true 聽聽聽聽ignorecase聽=聽true 聽聽聽聽precomposeunicode聽=聽true [remote聽"origin"] 聽聽聽聽url聽=聽https://github.com/sirupsen/logrus聽聽聽聽 聽聽聽聽fetch聽=聽+refs/heads/*:refs/remotes/origin/* [remote聽"auxten"] 聽聽聽聽url聽=聽git@github.com:auxten/logrus.git聽聽聽聽 聽聽聽聽fetch聽=聽+refs/heads/*:refs/remotes/auxten/* [branch聽"aux"] 聽聽聽聽remote聽=聽auxten聽聽聽聽 聽聽聽聽merge聽=聽refs/heads/master [push] 聽聽聽聽default聽=聽upstream⑤ push代码就用
git聽push聽-u聽auxten聽aux:master
这条命令的意思就是:push并把aux的upstream设置成auxten的master。
方法不是很完美,但是至少能比较优雅地解决本地开发编译的问题。
本文出自:https://zhuanlan.zhihu.com/p/24436747?refer=auxten
■欢迎关注聽Reboot教育聽聽Python实战班介绍---11月26日(周六)已开班
详情点击:http://www.51reboot.com/course/actual/
上课形式:面授班 / 网络直播班
报名QQ:979950755聽
本文出自 “Reboot运维开发” 博客,请务必保留此出处http://opsdev.blog.51cto.com/2180875/1884242
有疑问加站长微信联系(非本文作者)