ReentrantLock和synchronized的区别

1、ReentrantLock是一个类,synchronized是一个关键字,都是在JVM层面实现的互斥锁的方式。 2、功能方面ReentrantLock的功能要比synchrized更为全面,RenntrantLock能够支持公平锁和非公平锁,synchronized只能支持非公平锁、Reentr

样子的木偶 发布于 2023-12-30

循环语句for

循环语句for 1.1.1. Golang for支持三种循环方式,包括类似 while 的语法。 for循环是一个循环控制结构,可以执行指定次数的循环。 语法 Go语言的For循环有3中形式,只有其中的一种使用分号。 for init; condition; post { } fo

样子的木偶 发布于 2023-11-16

条件语句switch

条件语句switch 1.1.1. switch 语句 switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。 Golang switch 分支表达式可以是任意类型,不限于常量。可省略 break,默认自动终止。 语法 Go 编程语言中 s

样子的木偶 发布于 2023-11-16

条件语句if

条件语句if 1.1.1. Go 语言条件语句: 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。 Go 语言提供了以下几种条件判断语句: 1.1.2. if 语句 if 语句 由一个布尔表达式后紧跟一

样子的木偶 发布于 2023-11-16

结构体

结构体 Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 1.1. 类型别名和自定义类型 1.1.1. 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以

样子的木偶 发布于 2023-11-15

Map

Map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 1.1.1. map定义 Go语言中 map的定义语法如下 map[KeyType]ValueType 其中, KeyType:表示键的类型。 ValueTyp

样子的木偶 发布于 2023-11-15

指针

指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 1.1. Go语言中的指针 Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使

样子的木偶 发布于 2023-11-15

切片

切片Slice 需要说明,slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 1. 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。 2. 切片的长度可以改变,因此,切片是一个可变的数组。 3. 切片遍历方式和

样子的木偶 发布于 2023-11-15

数组

数组Array Golang Array和以往认知的数组有很大不同。 1. 数组:是同一种数据类型的固定长度的序列。 2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。 3. 长度是数组

样子的木偶 发布于 2023-11-15

go基本类型

基本类型 1.1. 基本类型介绍 Golang 更明确的数字类型命名,支持 Unicode,支持常用数据结构。 类型

样子的木偶 发布于 2023-11-14

go变量和常量

GO变量和常量 1.1. 变量 1.1.1. 变量的来历 程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通

样子的木偶 发布于 2023-11-14