Go语言上手-基础语言 | 青训营笔记

110 阅读3分钟

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