go.1
1.go语言优势
1.高性能 2.语法简单 3.丰富的库 4.完善的工具链 5.静态链接 6.快速编译 7.跨平台 8.垃圾回收
2.环境配置以及准备
1.下载go编译环境 2.下载集成开发环境vscode 3.下载go插件 4.配置系统路径 juejin.cn/course/byte… git.mycompany.com,github.com/my/private 5.根据提示补齐插件
3.基本语法
1.helloworld
import "fmt"
func main() {
fmt.Print("hello world!!")
}
package main 入口包 文件属于入口文件。fmt是往屏幕输入输出字符串。
运行
2.变量
强类型语言,每个变量都有自己的变量类型,字符串内置类型,可以直接通过+来拼接。使用var+变量名自动检测=后变量类型,也可以显式申明变量类型
Var a =''dadadad''
Var b,c int =1,2
另一种 :变量名:=值 f:=1
if else
和c,c++大致类似,区别在于if后无括号,且必须加{}
循环
没有while do while 只有for循环,for里什么都不写=死循环
经典c循环
for j:=7;j<9;j++{
fmt.Println(j)
}
可用continue,break
switch
C中不加break的话,会跑完满足条件及其以后的所有分支,golang不会
功能更强,可以使用任意的变量类型,字符串,结构体甚至取代ifelse语句
例如
条件分支
切片
可任意更改长度的数组,且拥有众多可调用功能
map
key-value
range快速遍历
I是索引num对应位置值
K -key
V- value
函数
func add (a int,b int)int 参数类型 返回值类型:int
func exists(m map[string]string ,k string)(v string ,ok bool){ v,ok=m[k] return v,ok } 接收一个map key和value都是string a-A 返回value和一个bool类型显示是否包含该key
func main(){ v,ok:=exists(map[string]string{"a":"A"},"a" fmt.Println(v,ok)//A true
}
指针
上面只是将n的值作为形参传入第一个函数,且没有返回值,所以不会改变原变量n的值,但是第二个函数的形参是指向int类型变量的指针,所以传入的实参必须是一个地址,所以第二个函数改变了指针指向地址的值,让其+=2,n改变。
结构体(方法)
类似c c++
结构体可作为函数参数
上面一小结,是将结构体本身作为参数传入,然后实现函数,这里的结构体方法,有点类似于类的成员函数,专门为结构体制定了方法,resetpassword方法实现了密码的更改,check实现了检查。
字符串
调包
1是否包含 2计数 5查找某个字符串位置6连接多个字符串7repeat重复字符串多次
printf和c很像,可用%v代替所有%.....
%.2f保留小数点后2位
获取时间 数字解析
strconv.Atoi 字符串数字转数字