当前位置: 首页 > news >正文

go 基本语法(简单案例)

!注: go中 对变量申明很是严格,申明了,在没有使用的情况下,也会产生编译错误
1.行分隔符
一行就是代码,无;分割,如果需要在一行展示,需要以;分割,否则编译出错

	fmt.Println("hello world")fmt.Println(111)fmt.Println("hello world");fmt.Println(111)

2.标识符
标识符就是常量或者func命名方式:
不能使用关键字,数字开头,运算符 如:case(关键字),1ab(数字开头无效字符),a+b(编译不通过)之类的来命名;也不允许使用预定义标识符 如 byte bool等

3.关键字
25个关键字

break	    default	     func	   interface	select
case	    defer	     go	       map	        struct
chan	    else	     goto	   package	    switch
const	    fallthrough	 if	       range	    type
continue	for	         import	   return	    var

4.预定义标识符
36个预定义标识符

append	bool	byte	cap	    close	complex	complex64	complex128	uint16
copy	false	float32	float64	imag	int	    int8	    int16		uint32
int32	int64	iota	len  	make	new	    nil   		panic		uint64
print	println	real	recover	string	true	uint		uint8		uintptr

5.go语言中的空格
go语言中的空格 为了提高代码的阅读性个规范,通常两个变量之间必须要有空格隔开,在if条件中是为了提高阅读性,在常量赋值中,没有空格隔开,编译出错。

const a int = 10
const b string = "ccc"func main() {var c int = 11if c < a {fmt.Print("a<10")} else {fmt.Print("a>10")}
}

6.格式化字符串
Go 语言中使用 fmt.Sprintf 或 fmt.Printf 格式化字符串并赋值给新串:

Sprintf 根据格式化参数生成格式化的字符串并返回该字符串。
Printf 根据格式化参数生成格式化的字符串并写入标准输出。
等同于 java中string.format()

    // %d 表示整型数字,%s 表示字符串var tempCode = 1234var endDate = "2023-12-24"var url = "Code=%d&endDate=%s"fmt.Println(fmt.Printf(url, tempCode, endDate))var target_url = fmt.Sprintf(url, tempCode, endDate)fmt.Println(target_url)

在这里插入图片描述
7.变量
go语言中变量同一个func中具有唯一性
只能申明一次
申明变量使用 var申明

var tempA, tempB, tempC int = 1, 2, 3 //申明同一种类型的变量可以采用这种方式fmt.Println(tempA)fmt.Println(tempB)fmt.Println(tempC)

先申明多个变量,在统一赋值

var tempA, tempB, tempC int //申明同一种类型的变量可以采用这种方式var stringVla stringtempA, tempB, tempC, stringVla = 1, 2, 3, "测试字符串"fmt.Println(tempA)fmt.Println(tempB)fmt.Println(tempC)fmt.Println(stringVla)

在这里插入图片描述

重复申明

var intVal intintVal := 1intVal1 := 10fmt.Println(intVal + intVal1)

在这里插入图片描述
go中 对变量申明很是严格
申明了,在没有使用的情况下,也会产生编译错误
在这里插入图片描述
函数调用

	//cc := "测试"var testStr string = "测试"v1, v2, v3 := disposeData(9, 1, testStr)fmt.Print(v1, v2, v3)
}func disposeData(d int, d1 int, c1 string) (int, int, string) {a, b, c := 1+d, 2+d1, "参数"+c1return a, b, c
}

在这里插入图片描述
8.常量
go中常量以 const(a,b,c)这种格式进行来命名常量
普通常量

	const (a = "常量测试"b = len(a)c = unsafe.Sizeof(a))

常量元素自动+1(iota)

	// 在const常量中,使用iota进行计算,它后面的的值都会依次+1const (a = iotabc)fmt.Print(a, b, c)

在这里插入图片描述
9.语言运算符
这里和传统很多语言中的一样就 不写代码实例了
运算符 描述 实例

==	检查两个值是否相等,如果相等返回 True 否则返回 False。	(A == B) 为 False
!=	检查两个值是否不相等,如果不相等返回 True 否则返回 False。	(A != B) 为 True
>	检查左边值是否大于右边值,如果是返回 True 否则返回 False。	(A > B) 为 False
<	检查左边值是否小于右边值,如果是返回 True 否则返回 False。	(A < B) 为 True
>=	检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。	(A >= B) 为 False
<=	检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。	(A <= B) 为 True

逻辑运算符

&&	逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。	(A && B) 为 False
||	逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。	(A || B) 为 True
!	逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。	!(A && B) 为 True

赋值运算符

=	简单的赋值运算符,将一个表达式的值赋给一个左值	C = A + B 将 A + B 表达式结果赋值给 C
+=	相加后再赋值	C += A 等于 C = C + A
-=	相减后再赋值	C -= A 等于 C = C - A
*=	相乘后再赋值	C *= A 等于 C = C * A
/=	相除后再赋值	C /= A 等于 C = C / A
%=	求余后再赋值	C %= A 等于 C = C % A
<<=	左移后赋值	C <<= 2 等于 C = C << 2
>>=	右移后赋值	C >>= 2 等于 C = C >> 2
&=	按位与后赋值	C &= 2 等于 C = C & 2
^=	按位异或后赋值	C ^= 2 等于 C = C ^ 2
|=	按位或后赋值	C |= 2 等于 C = C | 2

其他运算符

&	返回变量存储地址	&a; 将给出变量的实际地址。
*	指针变量。	*a; 是一个指针变量 int  4

运算符优先级
由高到低

5	* / % << >> & &^
4	+ - | ^
3	== != < <= > >=
2	&&
1	||

10.语言条件语句
if if-else 嵌套if switch selct
if语句

	var a int = 10//var b int = 12if a < 10 {fmt.Print("a<10")}

if-else

var a int = 10//var b int = 12if a < 10 {fmt.Print("a<10")}else {fmt.Print("a>10")}```
嵌套if```bashvar a int = 10var b int = 12if a == 10 {fmt.Println("a<10")if b > 10 {fmt.Println("b>10")}}

switch
等于某个值走某一项

switch marks {case 90: grade = "A"case 80: grade = "B"case 50,60,70 : grade = "C"default: grade = "D"  }switch {case grade == "A" :fmt.Printf("优秀!\n" )    case grade == "B", grade == "C" :fmt.Printf("良好\n" )      case grade == "D" :fmt.Printf("及格\n" )      case grade == "F":fmt.Printf("不及格\n" )default:fmt.Printf("差\n" );}fmt.Printf("你的等级是 %s\n", grade );  

select
接收到某个值走某一个

   c1 := make(chan string)c2 := make(chan string)go func() {time.Sleep(1 * time.Second)c1 <- "one"}()go func() {time.Sleep(2 * time.Second)c2 <- "two"}()for i := 0; i < 2; i++ {select {case msg1 := <-c1:fmt.Println("received", msg1) // 获取到c1的值执行case msg2 := <-c2:fmt.Println("received", msg2) // 获取到c2的值执行}} 

11.循环语句
这里的循环分为for,for-each 循环两种
for循环

sum := 0for {sum++          // 无限循环if sum == 10 { // 增加条件跳出循环fmt.Print(sum + 1)break}}

for-each循环
array数组循环

// for-each//数组strings := []string{"abc", "ABC"}for i, s := range strings {fmt.Println(i, s) //rang==java总的 each strings 数组名 i元素index,s元素value index从0开始}
map集合循环
// map集合map1 := make(map[int]string) //定义一个int(key) string(value)类型的map集合map1[1] = "a"map1[2] = "b"map1[3] = "c"map1[4] = "d"// 取出map集合中kvfor i, s := range map1 {fmt.Println(i, s)}// 读取map集合中的kfor i := range map1 {fmt.Println(i)}// 读取map集合中的vfor _, s := range map1 {fmt.Println(s)}

在这里插入图片描述

map集合和array数组结合使用测试

// map集合map1 := make(map[int]int)                        //定义一个int(key) string(value)类型的map集合tempInts := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //创建一个集合并赋值//var arr []int // 创建一个空数组if !reflect.ValueOf(tempInts).IsNil() {for i, tempInt := range tempInts {map1[i] = tempInt}} else {fmt.Println("集合为空!")}// 取出map集合中kvif len(map1) > 0 {for i, s := range map1 {fmt.Println(i, s)}}

在这里插入图片描述
在循环体当中通常还有一些控制语句

break 语句	经常用于中断当前 for 循环或跳出 switch 语句
continue 语句	跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句	将控制转移到被标记的语句。

用到最多的通常为上面两个
12.函数
函数也叫方法
一个函数当中扩了传参的参数,有些情况还包括了返回参数

	// 函数调用var maxVal = maxVal(10, 12)fmt.Println(maxVal)// 返回多个参数v1, v2, v3 := disposeData(1, 2, "测试")fmt.Println(v1, v2, v3)
}// 返回最大值,类型为int型
func maxVal(val1, val2 int) int {var res intif val1 > val2 {res = val1} else {res = val2}return res
}// 返回多个参数
func disposeData(d int, d1 int, c1 string) (int, int, string) {a, b, c := 1+d, 2+d1, "参数"+c1return a, b, c
}

在这里插入图片描述
13.变量
变量分为全局变量和局部变量两种;通常函数内的变量为局部变量,函数外为全局变量

package mainimport "fmt"/* 声明全局变量 */
var g intfunc main() {/* 声明局部变量 */var a, b int/* 初始化参数 */a = 10b = 20g = a + bfmt.Printf("结果: a = %d, b = %d and g = %d\n", a, b, g)
}

14.数组

// 数组语法格式为
var arrayName [size]dataType// 初始化数组
var arr1[10] int//初始化数组并赋值,两种都可以,根据自己需求选择
var numbers = [5]int{1, 2, 3, 4, 5}
tempInts := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 

具体操作不在这写了,循环操作那里有

15.指针
指针:go中的指针就是实体中的某个属性,有指针名称,指针名称,指针地址;除了这个以外,还有空指针的概念
这个通常用于校验一个数据是否为空时使用。
指针使用流程:

1.定义指针变量。
2.为指针变量赋值。
3.访问指针变量中指向地址的值。
4.在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。

	// 指针var name *string //指向string类型var age *int     //指向int型var i int = 20var tempAge *inttempAge = &i // 指向变量存储地址fmt.Println(name, age, tempAge)

在这里插入图片描述
空指针

if(ptr != nil)     // ptr 不是空指针 
if(ptr == nil)    // ptr 是空指针

16.结构体
这个结构和java中的实体对象一样,只有赋值和取值方式有所区别

type Books struct {title   stringauthor  stringsubject stringbook_id int
}// 创建一个新的结构体fmt.Println(Books{"go", "fetter", "go教程", 1111})// k-v形式结构fmt.Println(Books{title: "go", author: "fetter", subject: "go教程", book_id: 1111})// 忽略某个字段fmt.Println(Books{title: "go", author: "fetter", subject: "go教程"})// 使用对象接收并获取单个字段book := Books{title: "go", author: "fetter", subject: "go教程", book_id: 1234}fmt.Println(book.book_id)

在这里插入图片描述

17.切片
切片等元素截取,拼接

	// 切片 数组元素截取,拼接//s := arr[startIndex:endIndex]// 开始位置,结束位置;开始位置包括本身,结束位置到结束的前一位numbers := []int{0, 1, 2, 3, 4, 5, 6, 7, 8}printSlice(numbers)// 打印原始切片fmt.Println("numbers ==", numbers)//打印子切片从索引1(包含) 到索引4(不包含)fmt.Println("numbers[1:4] ==", numbers[1:4])// 默认下限为 0fmt.Println("numbers[:3] ==", numbers[:3])// 默认上限为 len(s)fmt.Println("numbers[4:] ==", numbers[4:])//append 数组元素追加// 追加一个10numbers = append(numbers, 10)fmt.Println(numbers)// 追加两个元素numbers = append(numbers, 10, 12)fmt.Println(numbers)}func printSlice(x []int) {fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}

在这里插入图片描述

18.语言范围range
Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。
具体的操作上面有这里不做实例了

19.map集合
map是一个k-v集合,增加删除查询都是基于k来做的

// 创建一个集合var currentMap = make(map[int]string)currentMap[1] = "a"currentMap[2] = "b"currentMap[3] = "c"// 遍历集合if len(currentMap) > 0 {fmt.Println("取出集合k-v")// 取出集合中的k-vfor i, s := range currentMap {fmt.Println(i, s)}fmt.Println("取出集合k")// 取出集合中的kfor i := range currentMap {fmt.Println(i)}fmt.Println("取出集合v")// 取出集合中的vfor _, s := range currentMap {fmt.Println(s)}}// 删除集合元素// 根据key删除fmt.Println("源集合", currentMap)delete(currentMap, 1)fmt.Println("删除后集合", currentMap)

在这里插入图片描述
20.类型转换
一种类型转为另一种类型

	// 类型转换// int转floatvar a int = 10var b float64 = float64(a)fmt.Println("int转float64", b)//string转intvar str string = "10"var num intnum, _ = strconv.Atoi(str)fmt.Println("string转int", num)//int转stringnum1 := 1234strVlue := strconv.Itoa(num1)fmt.Printf("整数 %d  转换为字符串为:'%s'\n", num1, strVlue)

在这里插入图片描述

21.接口 interface

	// go变量 对象在前,类型在后var phone Phone// java 类型在前,对象在后//private Object objectphone = new(NokiaPhone)phone.call()
}type Phone interface {call()
}type NokiaPhone struct {
}// 实现了Phone中的call()接口
func (nokiaPhone NokiaPhone) call() {fmt.Println("I m nokiaPhone , I call you phone")
}

在这里插入图片描述
22.异常处理
异常处理有捕获异常,返回响应前端,也有自己处理,这里直接打印了。

type error interface {Error() string
}
func Sqrt(f float64) (float64, error) {if f < 0 {return 0, errors.New("math: square root of negative number")}
}

相关文章:

go 基本语法(简单案例)

&#xff01;注&#xff1a; go中 对变量申明很是严格&#xff0c;申明了&#xff0c;在没有使用的情况下&#xff0c;也会产生编译错误 1.行分隔符 一行就是代码&#xff0c;无&#xff1b;分割&#xff0c;如果需要在一行展示&#xff0c;需要以&#xff1b;分割&#xff0c;…...

Permute 3 for mac音视频格式转换

Permute是一款Mac平台上的媒体格式转换软件&#xff0c;由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式&#xff0c;并提供了一些常用工具以便于用户进行编辑和处理。 Permute的主要特点包括&#xff1a; - 支持大量格式&#xff1a;支…...

线程概念linux

何为线程&#xff1a; 线程是程序中负责执行的单位&#xff0c;它可以被看作是进程的一部分&#xff0c;是进程的子任务。线程与进程的区别在于&#xff0c;进程是一个资源单位&#xff0c;而线程是进程的一部分&#xff0c;它只有栈这个独立的资源&#xff0c;其他资源如代码…...

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测追踪 | 轨迹绘制

&#x1f4e2;前言&#xff1a;本篇是关于如何使用YoloV5Deepsort训练自己的数据集&#xff0c;从而实现目标检测与目标追踪&#xff0c;并绘制出物体的运动轨迹。本章讲解的为第一个内容&#xff1a;简单介绍YoloV5Deepsort中所用到的目标检测&#xff0c;追踪及sort&Depp…...

express学习笔记4 - 热更新以及express-boom

我们每次改动代码的时候都要重启项目&#xff0c;现在我们给项目添加一个热更新 npm install --save-dev nodemon # or using yarn: yarn add nodemon -D 在package.json添加一行代码 "dev": "nodemon ./bin/www" 重启项目 然后随便做改动&#xff…...

Ajax_02学习笔记(源码 + 图书管理业务 + 以及 个人信息修改功能)

Ajax_02 01_Bootstrap框架-控制弹框的使用 代码 <!-- 引入bootstrap.css --> <link href"https://cdn.jsdelivr.net/npm/bootstrap5.2.2/dist/css/bootstrap.min.css" rel"stylesheet"><button type"button" class"btn btn…...

Python-数据类型转换

当涉及数据类型转换时&#xff0c;Python提供了多种内置函数来执行不同类型之间的转换 以下是每个方法的详细说明和示例案例 整数和浮点数转换&#xff1a; int(x, base10): 将给定的参数x转换为整数。x可以是一个整数、浮点数或字符串。如果x是字符串&#xff0c;则可以提供…...

DASCTF 2023 0X401七月暑期挑战赛 Web方向 EzFlask ez_cms MyPicDisk 详细题解wp

EzFlask 源码直接给了 CtrlU查看带缩进的源码 import uuidfrom flask import Flask, request, session # 导入黑名单列表 from secret import black_list import jsonapp Flask(__name__) # 为 Flask 应用设置一个随机的 secret_key app.secret_key str(uuid.uuid4())# 检查…...

数据结构-链表

&#x1f5e1;CSDN主页&#xff1a;d1ff1cult.&#x1f5e1; &#x1f5e1;代码云仓库&#xff1a;d1ff1cult.&#x1f5e1; &#x1f5e1;文章栏目&#xff1a;数据结构专栏&#x1f5e1; 目录 目录 代码总览&#xff1a; 接口slist.h&#xff1a; slist.c: 1.什么是链表 1.1链…...

大数据Flink(五十五):Flink架构体系

文章目录 Flink架构体系 一、 Flink中的重要角色 二、Flink数据流编程模型 三、Libraries支持...

使用矢量数据库打造全新的搜索引擎

在技术层面上&#xff0c;矢量数据库采用了一种名为“矢量索引”的技术&#xff0c;这是一种组织和搜索矢量数据的方法&#xff0c;可以快速找到相似矢量。其中关键的一环是“距离函数”的概念&#xff0c;它可以衡量两个矢量的相似程度。 1.矢量数据库简介 矢量数据库是专门…...

算法提高-树状数组

算法提高-树状数组 241. 楼兰图腾&#xff08;区间求和 单点修改&#xff09;242. 一个简单的整数问题&#xff08;差分推公式 实现 维护区间修改单点求和&#xff09;243. 一个简单的整数问题2&#xff08;区间修改和区间求和&#xff09;AcWing 244. 谜一样的牛&#xff08;…...

Django ORM详解:最全面的数据库处理指南

概要 深度探讨Django ORM的概念、基础使用、进阶操作以及详细解析在实际使用中如何处理数据库操作。这篇文章旨在帮助大家全面掌握Django ORM&#xff0c;理解其如何简化数据库操作&#xff0c;并透过表象理解其内部工作原理。 Django ORM简介 在深入讨论Django的ORM&#xff…...

Istio 安全 授权管理AuthorizationPolicy

这个和cka考试里面的网络策略是类似的。它是可以实现更加细颗粒度限制的。 本质其实就是设置谁可以访问&#xff0c;谁不可以访问。默认命名空间是没有AuthorizationPolicy---允许所有的客户端访问。 这里是没有指定应用到谁上面去&#xff0c;有没有指定使用哪些客户端&#…...

04 Ubuntu中的中文输入法的安装

在Ubuntu22.04这种版本相对较高的系统中安装中文输入法&#xff0c;一般推荐使用fctix5&#xff0c;相比于其他的输入法&#xff0c;这款输入法的推荐词要好得多&#xff0c;而且不会像ibus一样莫名其妙地失灵。 首先感谢文章《滑动验证页面》&#xff0c;我是根据这篇文章的教…...

faac内存开销较大,为方便嵌入式设备使用进行优化(valgrind使用)

faac内存开销较大&#xff0c;为方便嵌入式设备使用进行优化&#xff0c;在github上提了issues但是没人理我&#xff0c;所以就搞一份代码自己玩吧。 基于faac_1_30版本&#xff0c;原工程https://github.com/knik0/faac faac内存优化: faac内存开销较大&#xff0c;为方便嵌入…...

分数线划定(c++题解)

题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才&#xff0c;A 市对所有报名的选手进行了笔试&#xff0c;笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150% 划定&#xff0c;即如果计划录取 m 名志愿者&#xf…...

React 在 html 中 CDN 引入(包含 antd、axios ....)

一、简介 cdn 获取推荐 https://unpkg.com&#xff0c;unpkg 是一个快速的全球内容交付网络&#xff0c;适用于 npm 上所有内容。 【必备】react 相关 cdn。附&#xff1a;github 官方文档获取、现阶段官方文档 CDN 网址。 <script crossorigin src"https://unpkg.com…...

数据结构----异或

数据结构----异或 一.何处用到了异或 1. 运算符 //判断是否相同 用到了异或&#xff0c;看异或结果如果是0就是相同&#xff0c;不是0就是不同//注意&#xff1a; 不能给小数用&#xff0c;小数没有相等的概念&#xff0c;所以小数判断是否相同都是进行相减判断2.找一堆数中…...

PHP Smarty模板的语法规则是怎样的?

首先&#xff0c;你要知道Smarty模板是以模板格式来编写的。模板格式类似于HTML&#xff0c;但它的语法更加简洁明了。 以下是PHP Smarty模板的语法规则和代码例子&#xff1a; 变量&#xff1a;在Smarty模板中&#xff0c;你可以使用变量来显示动态内容。变量通常以“{$”符…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...

深度解析:etcd 在 Milvus 向量数据库中的关键作用

目录 &#x1f680; 深度解析&#xff1a;etcd 在 Milvus 向量数据库中的关键作用 &#x1f4a1; 什么是 etcd&#xff1f; &#x1f9e0; Milvus 架构简介 &#x1f4e6; etcd 在 Milvus 中的核心作用 &#x1f527; 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...

js 设置3秒后执行

如何在JavaScript中延迟3秒执行操作 在JavaScript中&#xff0c;要设置一个操作在指定延迟后&#xff08;例如3秒&#xff09;执行&#xff0c;可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法&#xff0c;它接受两个参数&#xff1a; 要执行的函数&…...