这是我参与「第五届青训营 」伴学笔记创作活动的第1天 青训营课堂笔记: Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。
Go语言的推出,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、语言设计良好、执行性能好”等优势,目前国内诸多 IT 公司均已采用Go语言开发项目。
Go语言有时候被描述为“C 类似语言”,或者是“21 世纪的C语言”。Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。
因为Go语言没有类和继承的概念,所以它和 java 或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说Go语言是一门混合型的语言。
Go中的switch功能很强大,具体实现可以去亲自代码试试效果:
var a = "hello"
switch a {
case "hello":
fmt.Println(1)
case "world":
fmt.Println(2)
default:
fmt.Println(0)
}
Go语言改进了 switch 的语法设计,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码可以避免执行到下一行
GO中还有一个可变长度的数组,名字叫做切片,利用这个切片能解决数组长度不够的问题。
GO中有range函数,这个函数可以对切片,map或通道以及数组进行快速遍历。
注:GOlang中命名开头大写的才能被别的包引入,类似java中的public; 标识符不能以数字开头
位运算:这是java中没有的, << 表示左移 , >> 表示右移,即箭头所指的方向是移动的方向。 示例:k=3,对k进行左移两位,3的二进制位11,对11左移两位的二进制为1100,表示的十进制数字是12
error的默认值为nil(代表无)
interface不能包含任何变量,实现接口就要实现接口所有的方法,注意实现方法和java有很大不同,
defer函数:作用是延迟函数调用(会将其后面跟随的语句做延迟处理),会在return语句更新返回值之后执行或者函数完毕执行,但注意,多个defer会进行入栈处理,到时候函数结束会进行出栈操作,之后你懂得(后进先出)。