go语言的特点
1.高性能,高并发 2.语法简单,学习曲线平缓 3.丰富的标准库 4.完善的工具链 5.静态链接 6.快速编译 7.跨平台 8.垃圾回收
选择go语言的原因
1.python性能不行 2.c++不太适合在线web业务 3.早期团队非java背景 4.性能比较好 5.部署简单,学习成本低 6.内部RPC和HTTP框架的推广
go的基本语法
go语言中的hello world
package main
import "fmt"
func main() {
fmt.Printf("hello world")
}
复制代码
package main表示这个文件属于main包程序的入口包 导入fmt包,主要是用来在屏幕上格式化输入字符串,输入输出字符串 而Printf是fmt包中的格式化输出字符串的一个函数
go语言的变量类型
string在go语言中属于内置类型,与其他语言进行区分 变量声明有两种方式 1.用var自动推导变量类型,必要时也可以显示的写出变量类型,如
var a=2
var b int=2
复制代码
2.用变量名 :=值来声明 a:=10
分支与循环
if else后的表达式不需要小括号,但必须要跟着一个花括号 if { } 像上面这样的格式 只有for循环,没有while do while
golang的swithch可以不加表达式而直接像if else的使用方式一样 例如
package main
import "fmt"
func main() {
var a=2
switch {
case a<2:
fmt.Println("a<2")
default:
fmt.Println("a>=2")
}
}
复制代码
golang中的switch不需要break,执行完一个分支就会自动break
数组与切片
go的数组定义方式是var 数组名[]数组元素类型,数组的读写与c语言等语言是一致的下标都是从0开始
切片是一个动态的数组,可以用make来创建,用append来对数组进行拼接,但是append需要把值重新赋值给原切片,也可以直接用:=来创建
map
map需要两个类型,第一个是key的类型,第二个类型是val的类型,从而构成kv对,如 map=make(map[string]int) 可以用map[key]=val直接插入,用delete进行删除 map在go语言中是完全无序的
range
用range遍历可以遍历切片,map或者数组 range会返回两个值,第一个值是下标,第二个值是值
函数
go语言的函数大多数会返回两个值,一般会返回错误信息和真正所需要的返回值
指针
go语言可以简单的使用指针
*int代表整形指针,nil代表空指针
结构体
结构体和类相似,但也和C语言的结构体相似,可以直接在{}中进行赋值,未被赋值的字段会赋值为默认值 同样可以和类一样在结构体中定义方法*
异常处理
首先要引用“errors”包,并且在函数添加err error的类型返回值,但函数出现错误时,返回一个新New的error对象 go语言可以精确的知道哪里出现了错误,并且可以使用if和else俩简单的处理错误
字符串操作
go语言中的strings包中有很多字符串操作函数,在需要时可以查询文档来使用
字符串格式化
基本的输出函数Printf Printfln Print
可以直接%v可以打印元素类型,可以用%+v进一步打印,也可以用%#v进行更近一步的打印 也可以用%f等具体的格式化符
字符串和数字之间转换
解析字符串的包strconv,用Prase或者Ato来转换