Go语言学习Tips

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言学习Tips相关的知识,希望对你有一定的参考价值。

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 [email protected]: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 = [email protected]: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://segmentfault.com/a/1190000006913499


■欢迎关注 Reboot教育  Python实战班介绍---11月26日(周六)已开班

详情点击:http://www.51reboot.com/course/actual/

上课形式:面授班 / 网络直播班

报名QQ:979950755 

本文出自 “Reboot运维开发” 博客,请务必保留此出处http://opsdev.blog.51cto.com/2180875/1884242

以上是关于Go语言学习Tips的主要内容,如果未能解决你的问题,请参考以下文章

Go 语言入门很简单--技巧和窍门(Tips and Tricks)

你知道的Go切片扩容机制可能是错的

7月编程语言排行榜最新出炉:Go语言闯进前十

golang代码片段(摘抄)

Halo2学习笔记——用户手册之Tips and tricks

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础