GO入门学习笔记

输出

fmt.Printf Print Println

格式化标识符 含义
%d 十进制整数
%e 科学计数法e表示或复数
%f 浮点数
%o 八进制
%x 十六进制
%s 字符串
%t bool类型

下面这一行调用了 fmt 包中的 Println 函数,可以将字符串输出到控制台,并在最后自动增加换行字符 \n:

fmt.Println("hello, world")
使用 fmt.Print("hello, world\n") 可以得到相同的结果。

Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。

字符串

len(s)获取字符串长度

strings包

strings.HasPrefix(str,"Th")
strings.HasSuffix(str,"love")

检查字符串str是否以Th开头,是否以love结尾,均返回一个bool类型值

strings.Contains(str,substr)

检查字符串substr是否为str的子串(连续)

strings.Index(s,str)
strings.LastIndex(s,str)

返回一个int类型值:
str在s中的索引(str第一个字符的索引)
str在s中最后出现位置的索引(str第一个字符的索引)
-1表示s中不含str

strings.Count(s,str)

返回一个int类型值:str在s中出现的非重叠次数

strings.Repeat(s,n)

返回一个字符串:n个s相接

strings.ToLower(s)
strings.ToUpper(s)

返回一个字符串:s全小/大写、

strings.TrimSpace(s)
strings.Trim(s, str)

剔除字符串开头和结尾的空白符号
剔除指定字符 注意:str中所含字符都会在开头结尾被去掉

strconv包

该包包含了一些变量用于获取程序运行的操作系统平台下 int 类型所占的位数,如:strconv.IntSize
任何类型 T 转换为字符串总是成功的。
针对从数字类型转换到字符串,Go 提供了以下函数:

  • strconv.Itoa(i int) string 返回数字 i 所表示的字符串类型的十进制数。
  • strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string 将 64 位浮点型的数字转换为字符串,其中 fmt 表示格式(其值可以是 'b''e''f''g'),prec 表示精度,bitSize 则使用 32 表示 float32,用 64 表示 float64。

针对从字符串类型转换为数字类型,Go 提供了以下函数:

  • strconv.Atoi(s string) (i int, err error) 将字符串转换为 int 型。
  • strconv.ParseFloat(s string, bitSize int) (f float64, err error) 将字符串转换为 float64 型。

利用多返回值的特性,这些函数会返回 2 个值,第 1 个是转换后的结果(如果转换成功),第 2 个是可能出现的错误,因此,我们一般使用以下形式来进行从字符串到其它类型的转换:

val, err = strconv.Atoi(s)

if err!=nil则说明出错

switch

左大括号必须同行
Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码,fallthrough不会判断下一条case的expr结果是否为true。
可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3

if-else

if condition1 {
// do something
} else if condition2 {
// do something else
} else {
// catch-all or default
}

注意同行问题
if和switch后都可以接一个初始化语句 注意分号!!!

switch result := calculate(); {
    case result < 0:
        ...
    case result > 0:
        ...
    default:
        // 0
}
switch a, b := x[i], y[j]; {
    case a < b: t = -1
    case a == b: t = 0
    case a > b: t = 1
}
if value := process(data); value > max {
    ...
}
if val := 10; val > max {
    // do something
}

append 函数常见操作

我们在第 7.5 节提到的 append 非常有用,它能够用于各种方面的操作:

  1. 将切片 b 的元素追加到切片 a 之后:a = append(a, b...)

  2. 复制切片 a 的元素到新的切片 b 上:

    b = make([]T, len(a))
    copy(b, a)
    
  3. 删除位于索引 i 的元素:a = append(a[:i], a[i+1:]...)

  4. 切除切片 a 中从索引 i 至 j 位置的元素:a = append(a[:i], a[j:]...)

  5. 为切片 a 扩展 j 个元素长度:a = append(a, make([]T, j)...)

  6. 在索引 i 的位置插入元素 x:a = append(a[:i], append([]T{x}, a[i:]...)...)

  7. 在索引 i 的位置插入长度为 j 的新切片:a = append(a[:i], append(make([]T, j), a[i:]...)...)

  8. 在索引 i 的位置插入切片 b 的所有元素:a = append(a[:i], append(b, a[i:]...)...)

  9. 取出位于切片 a 最末尾的元素 x:x, a = a[len(a)-1], a[:len(a)-1]

  10. 将元素 x 追加到切片 a:a = append(a, x)

posted @ 2021-09-14 16:34  Frozen_Heart  阅读(39)  评论(0编辑  收藏  举报