zhngs

zhngs

go注解(3)——操作数据

一.数组
1.声明
二.切片
1.声明
2.增删改查
三.字典
1.声明
2.增删改查
四.字符串
1.基础操作
2.相关函数
2.1 strings
2.2 strconv

一.数组

1.声明

var a [3]int = [3]int{1, 2, 3} //通用声明 a := [...]int{1, 2, 3} //效果和上面相同,三个点号代表自动计算长度 a := [...]int{99: -1} //100个元素,最后一个元素为-1,其他的都为0 x := a[len(a)-1] //内置函数len可以得到数组长度

二.切片

1.声明

  • s[i:j](其中0 <= i <= j <= cap(s))可以生成切片,这里的s可以是数组,数组指针,slice

  • 可以使用内置函数make来创建切片,make(T[], len, cap),cap参数可以省略,当省略时len和cap相等

  • note:slice之间无法使用==作比较,无法作为map的key

2.增删改查

  • 增,append的原理是如果slice内部仍有空间,扩展slice内容,如果没有空间,就新建一个容量是原来二倍的slice,并将原来内容拷贝到新slice

    var x []int x = append(x, 1) //使用内置函数append来追加数据 x = append(x, 1, 2, 3) //可以同时追加多个数据
  • 删,可以模拟出pop和remove的效果

    x = x[:len(x)-1] //pop func remove(slice []int, i int) []int { copy(slice[i:], slice[i+1:]) return slice[:len(slice)-1] }
  • 改和查直接在原地修改就可以

三.字典

1.声明

  • 可以使用内置函数make来创建一个map,也可以直接创建一个拥有字面量的map

    a := make(map[string]int) a := map[string]int { "hello": 1, "world": 2, } a := map[string]int{} //空map,需要注意此时并不等于nil

2.增删改查

  • 增,通过下标访问的方式,如果键不在map中,会得到value对应的零值,如果键在map中,则会返回value值。通过上述特性可以向map中添加新值

    a["alice"] = 3
  • 删,通过内置函数delete来删除指定键值对,即使该键不存在也是安全的

    delete(a, "alice")
  • 改,借助下标访问可以达到更新的效果

    a["alice"] = 5
  • 查,使用类似下标访问的方式,但是需要多加一个bool值

    if v, ok := a["alice"]; !ok { //如果该键不存在 }

四.字符串

1.基础操作

  • 通过s[i:j]可以生成一个新的字符串,为原来字符串的子串

  • 字符串可以使用==和<进行比较,比较使用字节进行,按照字典序排序

  • 字符串可以使用+和+=进行拼接

  • 原生的字符串字面量使用一对反引号书写,反引号内部的转义序列不起作用

  • note:字符串访问越界程序会panic;字符串的第n的字节不一定是第n个字符,因为一个UTF码点可以需要多个字节;字符串字面量永远不能改变

2.相关函数

2.1 strings

  • func Contains(s, substr string) bool,判断s中是否包含substr

  • func Join(a []string, seq string) string,把slice通过seq来连接

  • func Index(s, seq string) int,在字符串中查找seq所在位置,找不到返回-1

  • func Repeat(s string, count int) string,重复s字符串count次

  • func Replace(s, old, new string, n int) string,把s字符串中的old字符串替换成new字符串,n表示替换的次数,小于0表示全部替换

  • func Split(s, seq string) []string,把s字符串按照seq分割,返回slice

  • func Trim(s string, cutset string) string,在s头部和尾部去除cutset字符串

  • func Fields(s string) []string,将s按照空白字符分割(可以是一个或连续的空白字符),返回slice

2.2 strconv

  • func AppendInt(dst []byte, i int64, base int) []byte,将i按照base进制追加到dst

  • func FormatInt(i int64, base int) string,返回i的base进制的字符串表示。base 必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字

  • func ParseInt(s string, base int, bitSize int) (i int64, err error),返回字符串表示的整数值,接受正负号。base指定进制(2到36),如果base为0,则会从字符串前置判断,"0x"是16进制,"0"是8进制,否则是10进制;bitSize指定结果必须能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64