Go
简单介绍Go
Go的出名,估计真的是靠“爹”。反正人家有个好爹,这是毋庸置疑的。有时候我会想,为啥要用GO,其实Go能做的事情,Java也能做,到现在我也没有想明白。可能Go的存在就是为了那些C/C++想快速转到互联网行业的一个中转语言吧。说实话,对于指导Go里面有指针的第一时间。心中就是千万匹草泥马。但是草归草,生活的继续,还是得硬着头皮学。我有一个心理目标,既然学,就要分清楚学习到什么程度,以致于来花费多少时间。没错,对于Go,我的想法是能用,并且能稍微的用好一点。
Hello Go
一切语言的开始都是 Hello,World
1 | package main |
上面就是 main.go 文件。go 语言的文件后缀都为 .go。这个基本上每个语言都有这个特性啊。哈哈。
第一行:go 语言包管理机制,所有开始必须有个包名“自报身份”。
第二行:import 导入需要用到包
第三行:func main(){} 定义一个 main 函数。func 定义一个函数,main函数是可以运行的入口
Go 语法
定义一个 variable 的string变量
1
2
3var variable string
var variable = "string"
variable := "string"大小写,变量可见性
1
2var Variable string //外部可见
var variable string //外部不可见函数定义
1
2
3
4
5
6
7
8
9
10
11
12
13func Amethod(a int, b string)(int,error){//外部可见,传入a,b两个参数,返回int,error两个类型的参数
//do something
return v1,err1
}
func amethod(a int, b string)(int,error){//外部不可见,传入a,b两个参数,返回int,error两个类型的参数
//do something
return v1,err1
}
intResult,err := Amethod(1,"str") // 调用Amethod方法,并且定义intResult,err来作为接受返回值的两个变量
流程控制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19if a>0{
//do thing
}
for i := 0;i < 10; i++ { // 常见for循环
//do thing
}
for 1==1{ // 无限死循环
}
var aSlice := []int{1,2,3,4}
for idx,val := range aSlice{// 循环slice数组,range关键字
fmt.Print(idx,val);
}
switch
continue
break
go 开启协程
其实一开始写Go我是拒绝的,有几次都感觉,Java用起来多爽啊,Go这东西简直反人类。最近用着基本上也就没有抱怨了,很多时候都是怕自己做不好,还有自己的舒适区。其实刚毕业的一两年都是一个软件开发者最重要的时间吧。我16年毕业,半年Java开发后跳槽,说实话,如果不是女朋友来深圳的话,我可能真的会在易宝支付做下去吧。来深圳找工作并不是很顺利,很多时候自己心理压力大,也有一点事自己学的
不足。一方面还没有做满一年就跳槽,怕留给公司不好的影响,另一方面,半年的时间也就了解了一些基本的支付业务,并没有实际的开发到少东西。而来到新公司,第一件事情就是做一个自己不熟悉的东西。那个时候真的是一边做,也有一遍流泪的。越想越心酸,能力不足,眼前又痛苦。想想别人可以挑公司,而我还被公司挑来挑去。而现在的公司又每天都是做着我不熟悉的Go开发。那个时候心里憋屈啊。 在同事们看来,我从进公司第一天到完成Go开发组长的任务总共用了三天的时间,并且组长也是相当满意任务的完成度。只是他们不知道,我心里是多苦。从熟悉的Java转到Go,我真的是心里一万遍打死了自己,责怪自己。我的同事对我很好,给了我很大的帮助。我真的非常谢谢他们。完成任务后的第一天,我就开始做实际的生产上的项目了。那段时间什么都不知道,什么都不懂。我有时候真的都会默默流泪。但是不管怎样,如果你没能力,那么你只能好好的做好你手中的事情,硬着头皮,最终也是做完了。我很讨厌这种不能自己决定选择的生活,而我不管怎样,也不能放弃。chenzhijun,加油,每天努力一点点。