• 从 'golang新手容易犯的三个错误' 中学到的知识点


    from https://zhuanlan.zhihu.com/p/41418726

    1. 对nil map, nil slice 添加数据必然失败

    var m []string

    var n map[string]string

    m["name"] = "zzz"   // 出错

    因为仅仅声明的话,map是nil的

    所以一般这么创建map

    m:=make(map[string]string)

    或者

    m:=map[string]string{}

    2. 对:=的使用, 感觉这个有点过于特别了,一般情况下不会这么使用局部变量

    3. 值传递与引用传递

    golang中for range语法非常方便,可以轻松的遍历arrayslicemap等结构,但是它有一个特点,就是会在遍历时把当前遍历到的元素,复制给内部变量,具体就是在whoIsDead函数中的for range里,会把people里的每个person,都复制给p这个变量,所以对loop中变量的操作,不能影响到原变量

    所以如果需要修改到原变量,需要传递struct指针

    struct是值类型的数据,要使用指针去操作它

    package main
    
    import "fmt"
    
    type person struct {
        name   string
        age    byte
        isDead bool
    }
    
    func main() {
        p := &person{name: "zzy", age: 100}
        isDead(p)
        fmt.Println(p)
    }
    
    func isDead(p interface{}) {
        if p.(*person).age < 101 {
            p.(*person).isDead = true
        }
    }
    
  • 相关阅读:
    9"边界匹配
    8劈分
    7替换
    5逻辑匹配
    4分组匹配
    3贪婪匹配与勉强匹配
    python多线程之线程传参
    多线程(类的形式)---线程同步
    多线程基础
    Linux----黑马程序员Linux教学视频简记(转载)
  • 原文地址:https://www.cnblogs.com/yeyong/p/11016720.html
Copyright © 2020-2023  润新知