一、GO语言主要优点
- 高性能、高并发:Go语言内部可以通过goroutine来实现并发编程
- 语法简单,学习曲线平缓:类似C语言,但是去掉了大量表达式括号
- 丰富的标准库:高稳定性,高兼容性
- 完善的工具链:单元测试,性能测试,代码覆盖率
- 静态链接:编译结构默认是静态链接,只要拷贝exe文件就可以运行
- 快速编译
- 跨平台:能在linux,MacOs,Windows,安卓等平台下运行
- 垃圾回收:内置垃圾回收功能,使内存管理变得更加简单
二、基本语法
包的导入
在Go文件的第一行应该定义包的名称,package(包)是Go程序的基本组成单位。使用import可以将包导入并且使用包中的函数,常量来更加方便的实现各种功能。
上述片段导入了fmt包并且使用了fmt.Println来打印"Hello,World!"
通过在import后添加()可以一次性导入多个包。
变量和常量
通过var+变量名+‘=’来创建变量,如上述片段9行至12行所述,分别为字符串,整形,布尔型,浮点型。go中的字符串类型为内置类型,可以直接用加号来拼接,也可以用=号来比较两个字符串。或者通过变量名+‘:=’+变量类型来创建变量。通过const来创捷常量,如17到19行所示。
if-else
和C语言不同的是在if之后不需要加圆括号但是在条件之后必须要加花括号,不可以省略。
for
Go中只有for一种循环,和if一样,在for后面不需要加圆括号。
swtich
Go中不需要通过break来中断switch语句的运行,同时相比C等语言更加灵活,可以直接在case后面添加不同的条件语句。
数组
具有编号且固定长度的元素序列,可以读取或写入任意位置的值
切片
可以在任意时刻更改长度和内部的元素的可变数组。通过make来创建切片。通过append来添加元素,需要赋值回原切片。本质上是一个长度+容量+指向数组的指针。
map
哈希表,通过make创建map,键值和值一一对应。完全无序,遍历时随机输出。
range
通过range对slice和map快速遍历。
函数(func)
变量类型后置,返回多个值(返回值+错误信息)
指针(point)
对传入参数进行修改(拷贝)
结构体函数(struct)
用type+结构体名+struct来创建
错误(error)
在返回值类型中加入error,若无错误返回nil
字符串操作
从上到下分别是是否包含,计数,是否含有前缀,是否含有后缀,查找位置,连接字符串,重复,替换,分割,变为小写,变为大写。
json操作
保证结构体字段首字母大写,用json.marshal来序列化,变成byte数组,用string转换类型后可打印,默认是大写开头,可以在字段后添加格式。
字符串转化
通过ParseInt,PraseFloat和Atoi方法来转化,atoi不能转化非数字,会返回错误。
进程信息
os.Args来获取进程的参数,用os.getEnv和os.setEnv来获取或写入环境变量。
总结
Go语言是一种非常优秀的编程语言,它具有简洁的语法和强大的功能。相比于之前学习的C,C++,Java等语言,GO简化了大量输入中的括号,使得代码更加简洁易懂;支持并发编程、支持接口wo和结构体等,这些特性使得Go语言在开发大型项目时非常方便;支持垃圾回收机制,可以自动管理内存,避免了内存泄漏等问题。经过在网上的一些更进一步的学习,我了解到Go语言还支持静态类型检查,可以在编译时检查类型错误,避免运行时出现问题;支持函数式编程,可以使用高阶函数和闭包等特性来编写更加简洁、易读的代码。
当然他也有些缺点:GO语言中99%的包是存在github上的,这意味着包的稳定性依赖于github上的人。Go语言的接口接口是隐式继承的,这让某些情况下维护变得困难。相较于java和C++来说生态还累计的不够雄厚。在性能问题上也还不够优秀(中间件)。