2 - 常用集合

2020-07-02  本文已影响0人  天命_风流

数组

package Array_test

import "testing"

func TestArrayInit(t *testing.T)  {
    var arr [3]int // [0, 0, 0]
    var arr2 = [...]int{1,2,3}  // 如果你懒得看长度有多少,可以直接使用 ...
    //var arr3 = [...]int{1,2,3 }
    arr3 := arr2
    arr3[0] = 9
    t.Log(arr, arr2, arr3)

}

func TestArrayTravel(t *testing.T){
    var arr = [...]int{1,2,3}
    for i := 0 ; i < len(arr) ; i++{
        t.Log(arr[i])
    }
    for _, v := range arr{  // _ 为索引值,使用 _ 用于占位
        t.Log(v)
    }
}

func TestArraySection(t *testing.T){
    var arr = [...]int{1, 2, 3, 4, 5}
    arr2 := arr[3:]
    for _, v := range arr2{
        t.Log(v)
    }
    arr2[0] = 6
    t.Log(arr[3], arr2[0])  // 你会发现,它们的内容是共享的
}

切片

package slice_test

import "testing"

func TestSlice(t *testing.T){
    var s = []int{}
    for i := 0; i < 10; i++{
        s = append(s, i)
        t.Log(s, len(s), cap(s))
    }

    var s2 = make([]int, 3, 5)
    t.Log(len(s2), cap(s2))  // 3, 5
}

map

package ch7

import "testing"

func TestMap(t *testing.T)  {
    m1 := map[string]int{"one":1, "two":2}
    m2 := map[string]int{}
    m3 := make(map[string]int, 10)
    t.Log(m1, len(m1))
    t.Log(m2, len(m2))
    t.Log(m3, len(m2))

    for k, v := range m1{  // 遍历的方法
        t.Log(k, v)
    }

    if v, ok := m2["three"] ; ok{  // ok 为 bool 值,用于判断 key 是否存在。
        t.Log("exist", v)
    }else {
        t.Log("not exist", v) // no exist 0
    }
}
package map_ext

import "testing"

func TestMapWithFunc(t *testing.T)  {
    m := map[int]func(op int) int{}  // 创建一个 map,key 为 int, value 为 func;func 的输入为 int,返回值为 int
    m[1] = func(op int) int {
        return op
    }
    m[2] = func(op int) int {
        return op * op
    }
    m[3] = func(op int) int {
        return op * op * op
    }
    t.Log(m[1](2), m[2](2), m[3](2))  // 2,4,8
}
func TestMapForSet(t *testing.T){
    mySet := map[int]bool{}
    mySet[1] = true
    mySet[2] = true

    if mySet[1]{
        t.Log("1 is existing")  // 执行
    }else {
        t.Log("1 is not existing")
    }

    t.Log(len(mySet))  // 2
    delete(mySet, 1)  // 删除
}

字符串

package strin

import "testing"

func TestString(t *testing.T){
    var s string
    t.Log(s)
    s = "hello"
    t.Log(s, len(s))  // hello,5
    s = "\xE4\xB8\xA5"  // \x代表后面的两个字符为十六进制数据,也就是一个字节的数据量
    t.Log(s, len(s))  // 严,3
    s = "中"
    t.Log(s, len(s))  // 中,3

    c := []rune(s)  // 取 unicode
    t.Log(len(c))  // 1
    t.Logf("中 的 unicode:%x", c[0])  // 输出 中 在unicode 里的编码
    t.Logf("中 的 UTF8: %x", s)  // 输出 中 在UTF8 里的编码

}
func TestStringToRune(t *testing.T){
    s := "早睡早起"
    for _, c := range s{
        t.Logf("%[1]c %[1]x", c)  // 输出 c 的 unicode 编码,以及 c 的 十六进制编码
    }
}
上一篇下一篇

猜你喜欢

热点阅读