这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
go是一款高性能,高并发,支持垃圾回收的面向过程语言。对比传统的java等传统后端语言来说,其最大的特点是在语言层面提供了协程的支持,提高了并发性,也降低了学习的曲线。由于二者接触过这java,Python三门语言,并在课上学习了go,接下来就做一个对比。
| 语言名称 | go | java | Python |
|---|---|---|---|
| 学习曲线 | 易 | 后期较难 | 易 |
| 编译模式 | 静态 | 动态 | (无需编译) |
| 编译时间 | 短 | 长 | 短到忽略不计 |
| 并发实现 | 语言层面 | JUC并发包 | 标准库 |
| 速度 | 快 | 适中 | 慢 |
| 语法架构 | 面向过程 | 面向对象 | 面向对象 |
| 变量类型 | 强类型 | 强类型 | 弱类型 |
可以看到,Go实现了既简易又效率的两种最重要的特性,这也让其成为了目前最吃香的新兴语言之一。
GO的一些基本语法
声明字符串
var a = "asd" //
声明整数
var b,c int = 1,2 // 整数
声明浮点数
var e float64 //声明
if条件语句
if 7%2 == 0 {
// 必须直接大括号
} else {
}
for循环
//只有for循环
for{
//死循环
}
c风格for循环
for j:=8 ; j < 9;j++{
//经典for循环,可省略三段其中两段
}
从上述代码中,可以看到,go的语法处于c与python之间,既保留了c的主体语法框架,还简化了繁琐的语法结构,加快了开发效率。
数组
声明数组
var a[5]int
声明并赋值
b := [5]int{1,2,3,4,5}
切片
声明并创建切片
s := make([]string,3)
像python一样切片,不包括第5个元素
s[2:5]
字典
使用make(map)创建map,类似字典。
m := make(map[string]int)
删除键值对
delete(m,"one")
使用ok变量了解键值对是否存在
r,ok:=m["unknow"]
遍历map
for k, v:= m{
fmt.Println(k,v)//
}
结构体
定义某结构体
type user struct {
name string 'json:"n "'//转码json后此条叫n
password string
}
声明结构体函数
func (u user) chechPassword(password string) bool{//声明结构体函数
return u.password == password
}
结语
以上就是go语言的基本语法了,也是我第一次课的笔记,希望能够帮到大家哦