这是我参与「第五届青训营 」笔记创作活动的第1天
简介
Go语言优势:
- 高性能、高并发
- 语法简单
- 标准库丰富
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台【多平台】
- 垃圾回收【与java虚拟机类似的设定】
基础语法
变量声明
var t = 1
tt := 2
const con = 111
// Go语言中没有隐式类型转换,使用时需要用显式类型转换
for/if-else:少了个(),且没有while循环
switch:不需要break
数组声明:类型声明的位置变了
one := [5]int{1, 2, 3, 4, 5}
var two [2][3]int
slice:可变数组
good := []string{"g", "o", "o", "d"}
t := make([]string, 3)
t = append(t,"4")
map:
//通过这种方法可确定值是否存在
r, ok := m["unknow"]
fmt.Println(r, ok) // 0 false
range:将容器内容全部访问一遍
m := map[string]string{"a": "A", "b": "B"}
for k, v := range m {
fmt.Println(k, v)
}
for k := range m {
fmt.Println("key", k)
}
函数:func声明,参数类型之后才是返回类型
func exists(m map[string]string, k string) (v string, ok bool) {
v, ok = m[k]
return v, ok
}
//多返回值最常用于返回error错误信息
func dlv(a int, b int) (int, error) {
if b < 0 {
return 0, errors.New("b<0")
}
return a/b, nil
}
指针:类似于C++ 结构体:
type user struct {
name string
age int
}
//结构体函数
func (u user) check(rage int) bool {
return u.age == age
}
字符串/时间相关函数:大体与java类似【具体可参考相关文档】
a := "hello"
fmt.Println(strings.Contains(a, "ll")) // true
总结
1.通过本次课程我较快地学习了go的基础语法与函数使用,结合课前所提供的资料,更好地理解了课程内容。
2.后面的实例也对之前学习的基础语法进行了个小总结,其中拓展了不少知识点,这些都在课后进行了查漏补缺,其中针对proxy实例进行了重现,在一步步的添加中理解了思路来源。