GO后端入门1-3| 青训营笔记

42 阅读2分钟

(与课程ppt对应)

2.5Go语法中与C++类似,但仍有不同:

  1. if语法不加(),如果加了,编译器自动去掉;不能将if中内容写在同一行,Go需要加入大括号
  2. switch语句自动break
  3. 数组 定义var a[5]int{1,2,3,4,5},切片
//可以进行切片
 s:= make([]string,3)
 s = append(s,"d")//切片赋值
 c:= make([]string,len(s))
 copy(c,s)//拷贝s给c

2.8 map golong中的map是随机排序的。

 s:= make(map[string]int)
 m["one"] =1 //赋值
 delete(m,"one")//删除键值对

2.9 range

for k,v :=range m{}//遍历的是map类型,可以使用_进行

2.10 函数 变量类型是后置的,下列代码v和ok均为返回值。

func ex(m map[string]int,k string)(v string,ok bool){
return v,ok
}

2.11指针 此处主要为改变函数使用时候变量(类似于C++)

func add(int *n){
*n+=2;
}
//使用时:
add(&n)

2.12结构体 结构体支持指针(2.11),可作为函数参数

2.13结构体方法

2.14错误处理

在函数返回值里面加入err 类型参数,在return时返回error.new("error message")

2.16字符串格式化

//打印:
fmt.Printf("%v",s)
fmt.Printf("%+v",s)//打印字符串名称+值
fmt.Printf("%#v",s)//打印字符串类型、名称+值

2.17 json操作

2.18时间处理

Go语言的实战案例

3.1 此处与老师讲解不同的是,我的代码中不需要加入时间戳就能够产生不同的随机数(?

package main

import (
	"fmt"
	"math/rand"
)

func main() {
	maxNum := 100
	secretNumber := rand.Intn(maxNum)
	fmt.Println("The number is", secretNumber)
}

Go语言进阶与依赖管理

01,语言进阶 协程:用户态,轻量级线程,栈KB级别,由Go语言自己创建,甚至一次可以创建上万协程

线程:内核态,线程跑多个协程,栈MB级别 协程与线程 调用协程:在函数前面加入一个go关键字即可

go func(j int){
hello(j);
}

1.2 协程通信 协程通信

1.3 Channel 通道 无缓冲通道 make(chan int) 由缓冲通道 make(chan int,2) 通道对比

02依赖管理:

环境变量:GOPATH GOPATH

Go Vendor:通过在每个项目引入一份依赖的副本,优先使用该vendor文件中存储的版本。

Go Module:通过go.mod文件管理依赖包版本,通过go get/go mod 指令工具管理依赖包 依赖配置