zoukankan      html  css  js  c++  java
  • 从 '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
        }
    }
    
  • 相关阅读:
    Python基础第十五天:初始面向对象
    Python基础第十四天:模块和包
    支付宝支付,邮件发送,短信推送,微信推送
    滑动验证
    Haystack全文检索
    Celery完成定时任务
    scrapy框架
    手机app抓包
    MongoDB数据库
    xpath解析数据
  • 原文地址:https://www.cnblogs.com/yeyong/p/11016720.html
Copyright © 2011-2022 走看看