这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
下面是我对Go语言基本的特性和语法的总结
1. go语言特性
高性能,高并发。拥有丰富标准库,静态连接。跨平台,垃圾回收
2. Go声明变量语句 (显式声明,隐式声明)
var a = "intial"这里面是一个隐式变量声明,会根据后面所写的初始值来赋予变量类型var b,c int = 1,2这里面是显示变量声明,在声明的时候已经表示是int类型
3. If语句
这里面与java的区别是条件句没有括号,而statement中必须有大括号。
见下面例子:
if 7%2 == 0 {
fmt.Println("7 is even")
}else{
fmt.Println("7 is odd")
}
4. For循环
- 死循环:
for{ statement xxx} - 常用的循环:
for j:=7; j<9; j++ { fmt.Println(j)}这里面我们和java类似可以使用continue和break去改变循环的进行方式
5. switch (与C语言不同 不需要加break)
swtich a{
case 1:
fmt.Println(xxx);
case 2:
fmt.Println(xxx);
}
这里我们需要注意两点:1. switch 其中的a适用于任意类型 2. switch可以替代if else
6. 数组和切片
-
数组:
var a [5] inta[4] = 100 -
切片(可变数组,非常常用):
s := make([]string,3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
s = append(s,"d","f")
c := make([]string, len(s))
copy(c,s)
fmt.Println(s[2:5])
利用make去声明一个切片,后面可以用append去添加后续的成员。
7. Map
m := make(map[string] int)
string 代表了key的类型, int 代表了value的类型:举例说明:m["one"]=1
8. 利用range遍历slice或map
数组会返回两个值:索引和对应值
举例说明:
for k, v := range m {
fmt.Println(k,v)
}
9. 函数
我们需要注意类型要后置!
func add(a int, b int) int{
return a+b
}
第三个int是返回值类型
10. 指针
func add2ptr( n *int){
*n += 2
}
func main(){
n := 5
add2ptr(&n)
}
11.结构体
type user struct{
name string
password string
}
两种赋值方法:
a := user{name:"wang",password:"1024"}var b userb.name="wang"b.password="1024"
12.JSON操作(把结构体转为数组)
buf, err := json.Marshal(a)
buf输出为一个数组,a为结构体一个样例
(除了结构体可以转为数组,数组也可以转为结构体)
除了上述总结的12个知识点,还有时间处理,数字解析和进程信息知识点,这几个知识点需要运用的时候看一下书就可以很好地运用。