zoukankan      html  css  js  c++  java
  • Golang 记录


    环境信息查看 go env
    运行文件 go run file.go
    构建二进制文件 go build file.go
    连接符 +
    声明变量
    var str string = "abc"
    var str = "abc"
    a := 1
    b := 2
    a, b = b, a

    定义常量 const str string = "abc"
    配合常量使用 iota 默认为0;
    const (
    a = iota
    b = iota
    c = iota
    )
    输出 0 1 2
    接收外部参数 os.Args[1]

    单元测试 go test -v --run functionName xx_test.go testfile.go ....go
    -v 打印详细输出日志
    --run 指定要测试的方法名(如果不输入这个 则执行所有的测试方法)
    xx_test.go 测试代码所在的文件
    testfile.go 依赖的被测试的文件 (要加上否则找不到被测试的方法)

    if 语句
    if a := 1 == 1; a {
    t.Log("1==1", a)
    }

    for 循环, switch
    for i := 0; i < 5; i++ {
    switch i {
    case 0, 2:
    t.Log("Even")
    case 1, 3:
    t.Log("Odd")
    default:
    t.Log("it is not 0-3")
    }

    switch {
    case i%2 == 0:
    t.Log("Even")
    case i%2 == 1:
    t.Log("Odd")
    default:
    t.Log("unknow")
    }
    }

    ... 自动设置数组元素个数
    arr3 := [...]int{1, 3, 4, 5}
    for i := 0; i < len(arr3); i++ {
    t.Log(arr3[i])
    }

    foreach
    for idx, e := range arr3{
    t.Log(idx, e)
    }
    _ 占位
    for _, e := range arr3{
    t.Log(e)
    }

    array
    // [开始截取的下标:截取到第几个元素] [2:3] 从下标2开始,截取到第三个元素
    // 数组容量不可变
    arr3 := [...]int{1, 2, 3, 4, 5}
    arr3Sec := arr3[2:3] // 从下标2开始,截取到第三个元素
    t.Log(arr3Sec) // [3]

    arr3Sec := arr3[2:] // 从下标2位开始,截取到最后
    t.Log(arr3Sec) // [3 4 5]

    arr3 := [...]int{1, 2, 3, 4, 5}
    arr3Sec := arr3[:2] // 截取到第2个元素
    t.Log(arr3Sec) // [1 2]

    切片 (动态数组)
    * 注意 切片共用同一块储存空间,一旦某个元素修改了,则整个储存数据都将改变
    // 数组可以进行比较 切片不可以
    初始化 s :=[] int {1,2,3 }
    初始化空切片 var s0 []type
    使用make创建 s := make([]type, len, capacity)
    len() 获取现有长度, cap() 获取最大容量
    var s0 []int
    t.Log(len(s0), cap(s0)) // 0 0
    s0 = append(s0, 1)
    t.Log(len(s0), cap(s0)) // 1 1

    map
    m1 := map[int]int{1:1, 2:4, 3:9}
    t.Log(m1[2])
    t.Logf("len m1=%d", len(m1))
    m2 := map[int]int{}
    m2[4] = 16
    t.Logf("len m2=%d", len(m2))
    m3 := make(map[int]int, 10)
    t.Logf("len m2=%d", len(m3))

    // 函数式设置
    m := map[int]func(op 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))

    mySet := map[int]bool{}
    mySet[1] = true
    mySet[3] = true
    t.Log(len(mySet)) // 2
    delete(mySet, 1) // 使用delete 删除元素
    t.Log(len(mySet)) // 1


    string
    s := "A,B,C"
    parts := strings.Split(s, ",") // 字符串拆分 [A B C]
    t.Log(strings.Join(parts, "-")) // 组合为字符串 A-B-C

    s := strconv.Itoa(10) // 整数转为字符串
    t.Log("str" + s) // str10
    if i, err := strconv.Atoi("10"); err == nil { // 字符串转为整数 会返回值和错误信息
    t.Log(10 + i, i, err) // 20 10 <nil>
    }

    defer // 函数结束时执行
    func Clear() {
    fmt.Println("Clear resource.")
    }

    func TestDefer(t *testing.T) {
    defer Clear()
    fmt.Println("Start")
    panic("error")
    }


    package
    在main被执行前,所以init方法会先执行,可以每个包里可以有多个init

  • 相关阅读:
    学习SpirngMVC之如何获取请求参数
    深入理解 CSS3 弹性盒布局模型
    JavaScript正则表达式验证大全(收集)
    我所认识的JavaScript正则表达式
    不再以讹传讹,GET和POST的真正区别
    JavaScript中的正则表达式
    Unicode 与 Unicode Transformation Format(UTF-8 / UTF-16 / UTF-32)
    PHP垃圾回收机制
    排序算法系列
    求最短路径算法系列
  • 原文地址:https://www.cnblogs.com/blue-t/p/14495672.html
Copyright © 2011-2022 走看看