[ go语言基础 | 青训营笔记]

42 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第1天 今天我学习了go语言的基础语法和案例,从0开始学习一门新的语言开始阶段多多少少会有些茫然,懵逼的,虽然它的有些语法和我熟悉的语言很像,但是一些它特有的还是需要我分辨记忆的。今天教的基础内容我能理解的差不多,但是第二个案例我确实看不太懂......之后的日子还得好好研究。 go语言基础语法 package main 入口文件,main包

import( "fmt" 导入输入输出包 )

func main(){ fmt.Println("hello world") 输出hello word } 变量运算的优先级和C类似 变量声明: var a = 1 或者 var a int = 1

b := 4 c :=a+b; 常量声明 const H = 5000 注意:常量声明没有确定类型,可以根据上下文确定

选择语句: if num := 9; num < 0 { fmt.Println(num, "is negative") } else if num < 10 { fmt.Println(num, "has 1 digit") } else { fmt.Println(num, "has multiple digits") } 注意:if后面必须跟大括号

循环语句: for n := 0; n < 5; n++ { if n%2 == 0 { continue } fmt.Println(n) }

Switch语句: a := 2 switch a { case 1: fmt.Println("one") case 2: fmt.Println("two") case 3: fmt.Println("three") case 4, 5: fmt.Println("four or five") default: fmt.Println("other") } 注意:与C不同,不用break就可以退出整个语句

数组 定义: var a [5]int var twoD [2][3]int 长度 len(a)

切片 s := make([]string, 3) 添加元素 s = append(s, "e", "f") 拷贝切片:copy() s[2:5] 第二个位置到第五个位置的元素不包括第五个位置

map: 定义:m := make(map[string]int) 写入:m["one"] = 1 删除:delete(m, "one") 读取:r, ok := m["unknow"] 注意:ok用来读取,map中是否存在 map中存储是无序的

range:快速遍历: for i, num := range nums

函数: func exists(m map[string]string, k string) (v string, ok bool) { v, ok = m[k] return v, ok } 可以返回多个值

结构体: 定义: type user struct { name string password string } a := user{name: "wang", password: "1024"} b := user{"wang", "1024"} c := user{name: "wang"} c.password = "1024" 结构体方法: func (u *user) resetPassword(password string) { u.password = password } a.resetPassword("2048") 可以修改值

时间处理: time.Now()获取现在时间 t := time.Date(2022, 3, 27, 1, 25, 36, 0, time.UTC)构造时间段 fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute()) // 2022 March 27 1 25 fmt.Println(t.Format("2006-01-02 15:04:05")) 输出时间段

数字解析: strconv.ParseInt(字符串, 进制, 位) strconv.Atoi("123") 直接转换