• GO语言基本知识 踏雪扬尘


    关键易错知识点总结

    Stacking defers 最后进去的先出去执行 , defer 在函数返回的时候调用; 并且 defer中的函数所属的变量是初始化的时候就绑定的

    slice 2种区别:
    make([]int, 5 (长度), 5(容量)) 相当于初始化如下效果 [0,0,0,0,0]
    make([]int , 5(容量)) 相当于初始化一个数组, 容量是5 , 但是 startIndex = 0 endIndex = 0 , 也就是 len 为0 。 其实 slice 也可以理解在 数组的基础上进行指针的移动。

    Type assertions:
    t, ok := i.(T) 此语句进行类型诊断, 诊断成功 ok 为 TRUE

    Type switches:
    switch v := i.(type) {// v 装换为T类型并且hold原始 i 对应的值; 注意 v 不是转换为 type 的 值
    case T:
    // here v has type T
    case S:
    // here v has type S
    default:
    // no match; here v has the same type as i
    }

    几个比较使用的 interface:
    tostring实现:
    type Stringer interface {
    String() string
    }

    Errors
    type error interface {
    Error() string
    }

    Readers
    io.Reader interface 把流的数据读入 byte[] 中
    func (T) Read(b []byte) (n int, err error)

    反射

    反射就是用来检测存储在接口变量内部(值value;类型concrete type) pair对的一种机制,reflect.TypeOf()是获取pair中的type,reflect.ValueOf()获取pair中的value 。
    convertPointer := pointer.Interface().(*float64) 将反射类型重新转换为接口变量类型

    unsafe.Pointer是像*Dog类型的值这样的指针值和uintptr值之间的桥梁, 指针值和uintptr 之间的转换必须经过unsafe.Pointer作为中间媒介,操作更贴近于底层和内存
    一个变量要进行指针操作必须是”可寻址的“, 而不可寻址的条件如下:满足任何一个就不可寻址
    1,不可变的
    2,临时结果
    3,不安全

    错误处理

    Panic 发生后会不断往上传递最顶层的main函数(类比 Java 的 exception 要是一直不处理,则会一直往上抛出直到程序出错),随后被GO语言运行时系统收回,程序崩溃、进程也销毁,不断完善错误信息,链条底层的先打印,随后出现的是往上一层的信息,直到main层

    路径环境变量


    go install 编译中间结果存储在$GOPATH/pkg
    pkg 存储归档目录,程序编译后的静态库文件 .a后缀结尾

    fallback 使用

    主要使用在 Switch 中, 默认每个case 是默认带上 break的, 当每个执行完毕之后就退出了
    fallback 主要使用于 强制执行后面的语句,生效于第一个 case 为 TRUE的情况, 然后后面只要有 fallback 都会强制执行后面的case, 但是 default不会被执行

    学习路径 参考极客时间

    GO语言技术知识单

    GO语言学习路径

  • 相关阅读:
    CentOS 7中cAdvisor的安装过程
    怎么查看centos版本
    使docker命令不用加sudo的方法
    Linux进程相关函数system,fork,exec函数族的区别
    git pre-commit hook failed 解决办法
    lint-staged 教程
    用webpack将多个scss文件打包成一个css文件
    js连按键盘事件
    vscode快捷键
    vim 操作命令大全
  • 原文地址:https://www.cnblogs.com/yyystar/p/15734911.html
Copyright © 2020-2023  润新知