2023年5月13日 23:40 已保存
基础语法:
package包 每个程序都需要装包,主程序需装main包 main包可以调用其他包的程序,是包中特殊的包
- fmt.Println(,) 输出
- := 是短变量声明操作符,用于声明并初始化一个新的变量
- = 是赋值操作符,用于将右侧的值赋值给左侧的变量。 使用:=操作符可以省略变量的类型声明,因为Go编译器可以根据右侧的值推断出变量的类型。
循环
- if 后加大括号{},判断表达式不用加()
- for后加{},不加表达式就死循环
switch 1.switch后可不加判断式,case加判断式,用作多次if elseif case不会顺延
数组 数组声明 [数组长度]数组类型 [5]int{1,2,3,4,5}
切片 make([]数据类型,切片长度)创造切片 切片只支持从左到右的切片,不支持负步长切 nums[0:5]切nums切片从0到4的切片
map字典/哈希表 make(map[key类型]value类型) r,ok := m["unknow"] r获取"unknow"键对应的value,ok获取错误信息的bool
range range关键字用于遍历数组、切片、映射和通道等数据结构。它可以返回每个元素的索引和值。
与Python中的enumerate()函数类似,range关键字也可以在遍历时返回每个元素的索引。但是,range关键字的主要作用是遍历数据结构,而不是跟踪索引。因此,它与Python中的for循环结构更为类似。
函数 func exists(m map[string]string, k string)(v string, ok bool){ v, ok = m[k] return v, ok } v返回m哈希表中k键对应的value,ok为错误信息的bool
指针 func add1(n int)传值 func add2(n *int)指针 add2(&n)
结构体 Age int 数据类型在变量名后 函数支持结构体指针 结构体.属性
错误处理 一般返回值传两个,值,错误信息的bool 先检验错误信息,在使用值
字符串操作 strings.Contains(str,"ll") strings.Count(str,"l") strings.HasPrefix(str,"he")前缀匹配 strings.HasSuffix(str,"llo")后缀匹配 strings.Index(str,"l") strings.Join([]string{"he","llo"},"-") //he-llo strings.Repeat(a,2) //hellohello strings.Replace(a,"e","E",-1) 第四参数表示替换次数,-1表示所有字符 strings.Split(str,"e") strings.ToLower(str) strings.ToUpper(str) len(str)
格式化输出 fmt.Printf("s=%v\n",s) %v自动匹配类型 %+v显示进一步信息 %#v显示更详细信息 %.2f小数点保留2位
json 一个结构体(每个字段的第一个字母是大写——公开字段) 可用json.Marshal(结构体)去序列化,变成json的字符串 也可用json.unmarshel反序列化赋到一个空变量 结构体里可提前在后面设置该字段序列化后的字符 Age int 'json:age'
时间处理 time.Now()返回当前时间 time.Date()构造时间格式 t2.sub(t1) t2时间-t1时间 .Unix获取时间戳 .Format("2006-01-02 15:04:05")用具体格式时间来设置时间变量的格式 Parse(layout, value string) (Time, error) layout 是一个字符串,用于指定输入的时间字符串的格式,value 是要被解析的时间字符串
字符串转换 strconv.ParseFloat(字符串,float的精度) strconv.ParseInt(字符串,进制,精度) num,err := str.Atoi("123")自动转换数字
进程信息 os.argv获取程序执行的时候的指定命令行参数 mian.go a b c d 输出长度为5的切片[文件名,a,b,c,d] os.getenv读取环境变量 exec.Command(执行命令,命令参数)
标题:Go 语言上手 - 基础语法 .pptx - 飞书云文档