什么是Go语言?
go语言是谷歌出品的一种通用性计算机编程语言
Go的特点
- 高性能,高并发:在性能方面,足以和c/c++的老牌语言媲美的性能,还有对高变化的支持,不想其他语言一样需要各种库的支持。通过轻量级的线程来实现高并发,能更高效的处理并发任务。
- 语法简单,学习曲线平缓:语法简单易懂,类似C语言,并在此基础上进行了大幅度的简化,非常容易上手,学习曲线平缓,学期周期也短,一个熟练的开发者一周就能从学习到实践开发。
- 丰富的标准库:Go语言与Python一样,有非常强大丰富且靠谱的标准库,含有各种常用功能的模块,能大幅度降低学习和使用成本。最关键的是还有很高的稳定性与兼容性保障。
- 完善的工具链:Go语言有一条非常完善的工具链,包括编译,代码格式化,错误检查,代码补充提示等等工具,还有完整的单元测试框架,能进行单元测试,性能测试,代码覆盖率,性能优化等等,能帮助开发者提升工作效率。
- 静态链接:Go语言的编译依赖最后的可执行文件,非常方便快捷。
- 快速编译:在静态语言中,Go语言拥有几乎最快的编译速度。
- 跨平台:Go语言可以在多种操作系统中进行开发,还具有交叉编译功能,使得Go语言非常适合跨平台开发。
- 垃圾回收:Go语言自带垃圾回收功能,使得开发者无须关系内存分配,减轻开发者的使用负担。
Go语言的入门
配置开发环境
- vs vode,免费下载,安装Go扩展插件,即可使用
- Goland,专门为go语言开发的的编辑器,但需付费
Go语言的基础语法
-
认识世界,Hello World!
package main import ("fmt") func main() { fmt.Println("Hello Woeld!") }/fmt中含有输入输出函数
-
变量与常量
package main import( "fmt" "math" ) func main(){ var a = "initial" var b , c int = 1,2 var d = true var e float64 f := float32(e) g := a+"foo" fmt.Println(a,b,c,d,e,f)//initial 1 2 true 0 0 fmt.Println(g)//initialfoo const s string = "constant" const h = 50000000 const i = 3e30/h fmt.Println(s,h,i,math.Sin(h),math.Sin(i)) //constant 50000000 6e+22 0.8256467432733234 0.16141170821152984 }变量的定义有两种方式,var 或者 := ,一般系统都可以自动识别类型,如果想写,比如上面代码第九行,也可以,不算错误,常量也是同理。
常量的定义在前面加const,在go中常量没有确定的类型,会根据上下文自动确定类型。
-
if..else..语句
package main import "fmt" func main() { if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } if 8%2 == 0 { fmt.Println("8 is divisable by 4") } if num := 9; num < 0 { fmt.Println(num, "is negative") } else if num < 10 { fmt.Println(num, "has 1 dight") } else { fmt.Println(num, "has multiple digits") } } go和C/C++的if..else..循环的区别
- if后面的判断条件go语言不要小括号,但是C/C++必须要小括号。
- go语言中,if+判断条件 后面必须要有大括号,不能省,但是C/C++中可以省略。
-
for循环
package main import "fmt" func main() { for { fmt.Println("死循环!") break } for j := 7; j < 9; j++ { fmt.Println(j) } for n := 0; n < 5; n++ { if n%2 == 0 { continue } fmt.Println(n) } } go语言中的循环没有do..while../while..循环,只有for循环。
其中for循环的判断条件,不用小括号
-
switch循环
package main import ( "fmt" "time" ) func main() { a := 2 switch a { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") case 4: fmt.Println("four") default: fmt.Println("other") } t := time.Now() switch { case t.Hour() < 12: fmt.Println("It's before noon") default: fmt.Println("It's after noon") } }go语言里的switch功能更加强大,而且默认执行一次,不再需要break跳出循环。
与其他语言相比,go中的Switch更加强大,可以使用任意的变量类型(第十行),比如字符串,结构体,甚至有的可以代替if。else。循环语句
小结
第一次小结,在第一课中开始了解了Go语言的一些性能,这些大部分都是Go语言的一些优势,这也是选择Go的原因,我也详细记录了下来,下面是一些最基础的go语言的基础语法,但是因为字数原因,是写了一些,后面的语法就是有些难度的了,留到下一章再说吧