[Golang] Go语言基础一知半解??这些你容易忽视的知识点(第一期)

62 阅读1分钟

在这里插入图片描述

1. := 语法糖的理解误区

在基础类型中,map,interface,point,channel,函数等空值为nil := 定义时声明并初始化了变量,同时也分配了内存地址,所以是一个真正的实例 ,不是空值 在这里插入图片描述

2. 为什么nil != nil

首先我们可以知道的是: 编译器可以清楚的知道变量的类型,但是接口类型除外 在这里插入图片描述 为什么s1 和 s2 同为nil,比较却是不相同的,因为接口的内部是分为Type和Value的, s1 (T=*int,V=nil) s2 (T=nil,V=nil) 所以是不同的,所以导致nil != nil

下面这个例子,将给空接口赋值,因为类型不同,所以不等于nil 在这里插入图片描述

3. 空结构的作用

空结构 没有任何字段的结构类型,并且占用空间的大小为零字节 具体应用: **1. 在定义channel 时,使用空结构体代替基本类型来传递信号,更快更便捷

  1. 能够防止unkeyed初始化结构**

4. 什么是并行和并发

顺序执行:正在吃法,电话响了,吃完饭再接电话 并行:同一时间去做多件事,电脑同时能播放音乐和打游戏 并发:没有时间间隔,正在吃饭,电话响了,先接电话,打完电话再吃饭

5. goroutine 和 channel

goroutinue 指 协程,比线程更轻量级 channel 指 管道,用于协程之间的通信