5月7日上课《Go语言上手-基础语言》笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
1.基础语法:
- package main 代表该文件属于main包(程序的入口包)的一部分
- import( “fmt” )表示导入一个包,该包主要用于往屏幕中格式化输入输出字符串
- func main(){ fmt.Println(“Hello World”) } 代表主函数,输出Hello World字符串 2.变量:
- 字符串可以直接用+拼接,也可以用=比较
- 变量的声明方式:
- var name = value (go可以根据value的值自动推导变量的类型)
- var name type = value
- name := value
- 常量的声明方式:
- const name = value 3.if else语法:
- if后的条件没有()且 {} 不可省略 eg:if 7%2 == 0{ ... } 4.循环: 唯一:for循环 用法:
- for{ ... }
- for j := 7; j < 9; j ++ { ... }
- for i <= 3 { ... } 5.switch语句:
- 每个case后不用加break 6.数组初始化:
- var name [num]type eg: var a [5]int
- name := [num]type{...} eg: b := [5]int{1, 2, 3, 4, 5} 7.切片:
- 初始化:name := make([]type, len)
- len(name) 可提取出name数组的长度
- name = append(name, var1,var2, ...) 可以向切片中追加元素
- name[l:r]可以取出[l, r]区间的数组元素,若省略l或r,则代表从最左侧元素或最右侧元素开始 8.map:
- 初始化:map[type1]type2 代表可将type1类型的值映射为type2类型的数值
- eg:m := make(map[string]int) m["one"] = 1 m["two"] = 2
- eg: m2 := map[string]int{"idx1": var1, "idx2": var2}
- 若访问下标不存在的切片位置,则返回值为[0,false]
- delete(name, idx)可删除idx处对应的元素 9.range:
- range遍历数组,返回两个值,索引和对应值
- eg: for i, num := range nums{...} 10.函数:
- 定义:func name(name1 type1, name2 type2, ...) type(返回值类型){...}
- eg:
- func add(a int, b int) int { return a + b }
- func add(a, b int) int { return a + b }
- func exists(m map[string]string, k string)(v string, ok bool){v, ok = m[k] return v, ok}
- func main() {...} 11.指针:
- 初始化:name *type 12.结构体:
- 初始化:type name struct { name1 type1, name2 type2...}
- 结构体指针变量和结构体变量都用.来访问内部变量,eg:u.password = “1024” 13.错误处理:
- err类型 14.字符串操作:
- string.Contains(string1, string2)
- 作用:判断string1中是否包含string2
- 返回值类型:bool
- string.Count(string1, string2)
- 作用:计算string1中包含多少个string2
- 返回值类型:int
- string.Index(string1, string2)
- 作用:查找string2在string1里的下标
- 返回值类型:int
- string.Repeat(string1, num)
- 作用:重复string1字符串num次
- 返回值类型:string
- string.Replace(string, string1, string2, -1)
- 作用:将string字符串的string1替换为string2
- 返回值类型:string
- string.ToLower(string)
- 作用:将string字符串中的大写字母变为小写字母
- 返回值类型:string
- string.ToUpper(string)
- 作用:将string字符串中的小写字母变为大写字母
- 返回值类型:string
- len(string)
- 作用:获得string字符串的长度
- 返回值类型:int 15.字符串格式化:
fmt.Printf("s = %v\n", s) // s = hello
fmt.Printf("n = %v\n", s) // n = 123
fmt.Printf("p = %v\n", p) // p = {1 2}
fmt.Printf("p = %+v\n", p) // p = {x:1 y:2}
fmt.Printf("p = %#v\n", p) // p = main.point{x:1 y:2}
16.JSON处理:
- json.marshal(struct)
- 作用:将传入参数结构体序列化,即变为一个数组,默认为16进制的编码,若想打印字符串则需用string转化 返回值:数组,错误号error 17.时间处理:
- time.now()
- 作用:返回当前时间
- time.Date()
- now.Unix()
- 作用:返回当前时间戳 18.数字解析:
- 需要引入包 import("strconv")
- 作用:将字符串转化为数字
- strconv.Atoi("num")
- 返回值:数字, 错误信息 19.进程信息:
- 需要引入包 import("os" "os/exec")
- os.Args
- 功能:获取进程在执行时的一些命令行参数
- os.Getenv(string)
- 功能:获取环境变量
- os.Setenv(string1, string2, ...)
- 功能:设置环境变量
- exec.Command()
- 功能:快速启动子进程并获取输入输出
buf, err = exec.Command("grep", "127.0.0.1", "/etc/hosts").CombinedOutput()x
- 功能:快速启动子进程并获取输入输出