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

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

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

在基础类型中,map,interface,point,channel,函数等空值为nil

:= 定义时声明并初始化了变量,同时也分配了内存地址,所以是一个真正的实例 ,不是空值

827541c863884e249d83679a5c6bfa07.png


2. 为什么nil != nil

首先我们可以知道的是:

编译器可以清楚的知道变量的类型,但是接口类型除外

30c9ea0dee894b198526cce2aa0e9a6e.png

为什么s1 和 s2 同为nil,比较却是不相同的,因为接口的内部是分为Type和Value的,

s1 (T=*int,V=nil) s2 (T=nil,V=nil) 所以是不同的,所以导致nil != nil


下面这个例子,将给空接口赋值,因为类型不同,所以不等于nil

16222406e454480d8e866adc92cd54c9.png


3. 空结构的作用

空结构 没有任何字段的结构类型,并且占用空间的大小为零字节

具体应用:

1. 在定义channel 时,使用空结构体代替基本类型来传递信号,更快更便捷
2. 能够防止unkeyed初始化结构


4. 什么是并行和并发

顺序执行:正在吃法,电话响了,吃完饭再接电话

并行:同一时间去做多件事,电脑同时能播放音乐和打游戏

并发:没有时间间隔,正在吃饭,电话响了,先接电话,打完电话再吃饭


5. goroutine 和 channel

goroutinue 指 协程,比线程更轻量级

channel 指 管道,用于协程之间的通信

相关文章
|
8月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
391 4
|
8月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
360 3
|
8月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
394 2
|
10月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
603 1
|
10月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
615 0
|
10月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
437 0
|
10月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
475 0
|
10月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
541 0
|
10月前
|
数据采集 Go API
Go语言实战案例:多协程并发下载网页内容
本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。
【Go语言入门100题】022 奇偶分家 (10 分) Go语言 | Golang
L1-022 奇偶分家 (10 分) Go语言|Golang 给定N个正整数,请统计奇数和偶数各有多少个?
395 0

推荐镜像

更多