go语言入门|青训营笔记

58 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1天

学习内容:基础语法、小项目实战

基础语法

变量声明:1、通过var声明变量 2、自动推导

var a int =10
a:=10

控制语句 if else,和c c++中基本类似,不需要括号

if a==10{
    x:=50
}else{
    x:=10
}

循环语句,只有for循环

for i:=0;i<10;i++{
    x++
}

switch语句

switch a{
    case 1:
        fmt.parinln("one")
    case 2:
        fmt.parinln("two")
}

数组:长度固定 切片:可变长度的数组,使用make创建切片,使用append添加元素

s:=make([]string,3)

map 键值对,是无序的

m:=make(map[string]int)

使用range快速遍历,可以用来快速遍历map和slice

for k,v:=range m{
    fmt.println(k,v)
}

函数:函数可以返回多个值,函数中的传值是拷贝,当我们需要需改这个变量的值的时候我们需要使用指针。

指针:go中的指针主要用途就是对常用的参数进行修改。

结构体:type name struct 。 可以使用.来读取和存储数据。

结构体方法:方法绑定某个结构体,那么该结构体的实例就可以通过.来直接调用结构体函数。

错误处理:函数返回错误,使用简单的if else来处理错误。很多函数都是需要带上err返回值,我们需要使用变量来接受这个err变量

字符串操作:strings库中包含着多个对字符串操作函数。

字符串格式化:fmt.Printf 可以使用%v来接受任意类型,使用%+v可以获得详细的信息,使用%#v可以获得更加详细的数据。

json结构:go中的结构体变量首字母大写的情况下,我们可以通过json.Marshal来直接序列哈结构体。json.Unmarshal进行反序列化。如果我们需要小写的字母,可以使用json tag。

时间处理:time.Now()获取当前时间。

字符串和数字转化:

func main() {
   f, _ := strconv.ParseFloat("1.234", 64)
   fmt.Println(f) // 1.234

   n, _ := strconv.ParseInt("111", 10, 64)
   fmt.Println(n) // 111

   n, _ = strconv.ParseInt("0x1000", 0, 64)
   fmt.Println(n) // 4096

   n2, _ := strconv.Atoi("123")
   fmt.Println(n2) // 123

   n2, err := strconv.Atoi("AAA")
   fmt.Println(n2, err) // 0 strconv.Atoi: parsing "AAA": invalid syntax
}

进程信息:os.Args

小项目

猜数字:生成随机数rand.Intn(),是一个伪随机数,需要使用时间戳初始化随机种子。

词典项目:通过http发送请求,获取json格式的数据,使用json.unMarshal进行反序列化,把json映射到结构体中,得到我们想要的数据。

socks5:编写代理服务。

收获

通过今天的学习,了解了go语言的基础语法,后续需要自己多加练习,go语言的语法和c还是比较相似的。学习起来难度不高。通过后面的小项目进一步的巩固了语言基础。