zoukankan      html  css  js  c++  java
  • golang日常记录

    • golang中 map slice interface chan 传递的是指针,是因为其 实例中 存储的数据 是用的指针。
      eg: slice
    type slice struct {
    	array unsafe.Pointer
    	len int,
    	cap int,
    }
    ```
    传递的过程中也是复制的 struct
    结果:
    1.append不能影响原slice
    2.json.Unmashal(buf, &slice)需要传入slice地址
    3.一个slice占三个字节
    
    * 赋值使用的是地址
    ```
    var i int
    i = 1
    ```
    i的类型不能变,赋其他值 I的地址也不会变,有别于动态语言
    
    * map中的struct 不能直接修改 struct的属性
    ```
    m := map[string]Student{"people": {"name":"aaa"}}
    m["people"].name = "bbb"
    ```
    是错误的
    ```
    // A header for a Go map.
    type hmap struct {
        // 元素个数,调用 len(map) 时,直接返回此值
        count     int
        flags     uint8
        // buckets 的对数 log_2
        B         uint8
        // overflow 的 bucket 近似数
        noverflow uint16
        // 计算 key 的哈希的时候会传入哈希函数
        hash0     uint32
        // 指向 buckets 数组,大小为 2^B
        // 如果元素个数为0,就为 nil
        buckets    unsafe.Pointer
        // 扩容的时候,buckets 长度会是 oldbuckets 的两倍
        oldbuckets unsafe.Pointer
        // 指示扩容进度,小于此地址的 buckets 迁移完成
        nevacuate  uintptr
        extra *mapextra // optional fields
    }
    ```
    // todo 详解map
  • 相关阅读:
    Java 常用工具类
    Shiro 分析
    Oracle 恢复表操作内容
    Struts2 中的配置文件 package name 、namespace 以及 对象方法调用
    MySql 修改字符集
    命名空间、静态函数、实例函数
    Eclipse Tomcate 热部署
    Java Json
    Mybatis 存储过程调用
    HDFS源码分析心跳汇报之数据结构初始化
  • 原文地址:https://www.cnblogs.com/wayland3/p/11992927.html
Copyright © 2011-2022 走看看