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

Go语言笔记

目录

一、变量声明

二、流程控制

if(条件判断)

for(循环结构) 

 Switch(简化if)

goto(跳出循环)

三、运算符

1、算数运算符

2、关系运算符

3、逻辑运算符

4、位运算符

5、赋值运算符

四、数组

1、数组的定义

2、数组的初始化

3、数组的遍历

五、切片

1、切片的定义和初始化

2、数组转切片

3、切片的容量

4、使用make()函数构造切片

5、append()

6、copy()


一、变量声明

1、函数外的每个语句都必须以关键字开始(var/const/func等)

2、:= 只能在函数内使用

3、_ 多用于占位,表示忽略值

4、const定义,iota从0开始,每增加一行,自动+1

const (_  = iotaKB = 1 << (10 * iota)MB = 1 <<(10*iota)GB = 1 << (10*iota)TB = 1 << (10*iota)PB = 1 << (10*iota)
)

5、八进制&十六进制,注:Go语言无法直接定义二进制

    //八进制,0开头var ba int = 027//十六进制,0f开头var sa int = 0xfa

6、字符串,Go语言中的字符串以原生数据类型出现,类似(int/bool/float32等)。默认编码使用UTF-8

6、字符串转义符,使用反引号内部是什么就输出什么,不用加转义符

    //反引号的作用,内部写什么就输出什么,不用加转义符s1 := `C:\Users\230900013\go\src`s2 := "C:\\Users\\230900013\\go\\src"

二、流程控制

if(条件判断)

    //m只在if判断内部生效n := 18if m := 12; m > n {fmt.Println(" m > n", m, n)} else if m == n {fmt.Println(" m = n", m, n)} else if m < n {fmt.Println(" m <>> n", m, n)}

for(循环结构) 

    s := "1234567890"for i := 0; i < len(s); i++ {fmt.Printf("for循环基本格式 %c\n", s[i])}//Go没有while循环,可以用for循环完成for {fmt.Println("for无限循环", s)}n := "anfajakjfkasdjgn"for _, b := range n {fmt.Printf("for range循环 %c\n", b)}

 Switch(简化if)

	switch expr := 4; expr {case 2, 4, 6, 8:fmt.Println(expr, "是偶数")case 1, 3, 5, 7:fmt.Println(expr, "是奇数")default:fmt.Println(expr)}age := 36switch {case age < 18:fmt.Println(age, "未成年人")case age >= 18 && age < 35:fmt.Println(age, "青年人")case age >= 35 && age < 55:fmt.Println(age, "中年人")fallthrough//表示向下穿透,满足该case时,也会执行下一个casecase age >= 55:fmt.Println(age, "好好享受退休生活吧")default:fmt.Println(age, "活着真好")}

goto(跳出循环)

    flag := falsefor i := 0; i < 10; i++ {for j := 0; j < i; j++ {if j == 5 {flag = truebreak //跳出内层循环}fmt.Printf("%d - %d\n", i, j)}if flag {fmt.Printf("over\n")break //跳出外层循环}}for i := 0; i < 10; i++ {for j := 0; j < i; j++ {if j == 5 {goto Lable}fmt.Printf("%d - %d\n", i, j)}}Lable:fmt.Println("这里用到了跳转")

三、运算符

1、算数运算符

+、-、*、/、%(++、--在go语言中是单独的语言,不能放在=右边)

2、关系运算符

==、!=、>、>=、<、<=

3、逻辑运算符

&&、||、!

4、位运算符

&:参与运算的两数各对应的二进位相与

|:参与运算的两数各对应的二进位相或

^:参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1

<<:左移n位,高位丢弃,低位补0

>>:右移n位

5、赋值运算符

=、+=、-+、*=、/=、%=、<<=、>>=、&=、|=、^=

四、数组

1、数组的定义

var 数组变量名 [元素数量] T

var a [5]int
var b [5]bool

2、数组的初始化

    //方法一var a [5]inta = [5]int{0, 1, 2, 3, 4}fmt.Println(a)//方法二b := [...]int{0, 1, 2, 3, 4, 5, 6, 7}fmt.Println(b)//方法三,根据索引初始化c := [5]int{0:5, 4:20}fmt.Println(c)

3、数组的遍历

    //根据索引遍历str := [...]string{"wo", "ttt", "fff", "sss", "rrr"}for i := 0; i < len(str); i++ {fmt.Println(str[i])}//for rangefor _, i := range str {fmt.Println(i)}

五、切片

1、切片的定义和初始化

var name []T

    var age []intvar name []stringage = []int{18, 20, 5, 36}name = []string{"Linda", "Lucy", "Lily", "Kity"}var flag = []bool{false, true, false, true}temp := []string{"int", "string", "bool"}

2、数组转切片

    //左包含,右不包含str := [...]string{"wo", "ttt", "fff", "sss", "rrr", "ooo", "pip"}a1 := str[1:4]  //str取下标1-3的元素a2:=str[:3] 	//==> 0-2b1:=str[3:] 	//==> 3-len(str)c1:=str[:]		//==> 0-len(str)

3、切片的容量

切片的容量是指底层数组的容量

4、使用make()函数构造切片

make([] T, size, cap)

T:切片的元素类型

size:切片中元素的数量

cap:切片的容量

//int类型切片,长度5,容量10
a:=make([]int, 5, 10)

5、append()

    //int类型切片,长度5,容量10a := []int{0, 1, 2, 3}fmt.Printf("a=%v, len=%v, cap=%v\n", a, len(a), cap(a))//append 之后,容量会自动增加a = append(a, 12)fmt.Printf("a=%v, len=%v, cap=%v\n", a, len(a), cap(a))//将B切片追加到A切片, ...表示拆分b := []int{7, 8, 9, 10}a = append(a, b...)fmt.Printf("a=%v, len=%v, cap=%v\n", a, len(a), cap(a))

6、copy()

copy是深拷贝, := 赋值的方式是浅拷贝

	str := []string{"a", "b", "c", "d", "f"}stra := strvar strb = make([]string, 5, 10)copy(strb, str)fmt.Printf("str=%v, stra=%v, strb=%v\n", str, stra, strb)str[0] = "test"fmt.Printf("str=%v, stra=%v, strb=%v\n", str, stra, strb)

7、删除

切片没有删除方法,需要通过append操作间接实现删除元素操作。通过拼接,删除的元素实际是被覆盖了,原始指向的底层数组,内容也被改变,观察最终打印的arr,可以清晰看到切片和底层数组之间的关系变化

	arr := [...]int{1, 2, 3, 4, 5, 6, 7}s := arr[:]fmt.Println(s, len(s), cap(s))s = append(s[0:1], s[2:]...)fmt.Println(s, len(s), cap(s))fmt.Println(arr)

相关文章:

Go语言笔记

目录 一、变量声明 二、流程控制 if&#xff08;条件判断&#xff09; for&#xff08;循环结构&#xff09; Switch&#xff08;简化if&#xff09; goto&#xff08;跳出循环&#xff09; 三、运算符 1、算数运算符 2、关系运算符 3、逻辑运算符 4、位运算符 5、…...

java缓存介绍

在Java编程中&#xff0c;缓存技术是一种非常有效的优化手段&#xff0c;用于减少数据访问的延迟和提高应用性能。缓存技术通过存储数据的副本在内存中&#xff0c;使得后续对相同数据的请求能够直接从内存中快速获取&#xff0c;而不需要再次进行耗时的磁盘访问或网络请求。 缓…...

react中diff的选择性子树渲染

在React中&#xff0c;组件的渲染是高效的&#xff0c;这得益于React的虚拟DOM&#xff08;Virtual DOM&#xff09;和diff算法。React的diff算法主要用于比较旧虚拟DOM树和新虚拟DOM树之间的差异&#xff0c;并仅更新实际DOM中需要变化的部分&#xff0c;从而提高性能。 关于…...

Git clone远程仓库没有其他分支的问题

在使用Git克隆&#xff08;Git clone&#xff09;时&#xff0c;可能遇到分支不全的问题。有以下几种可能的原因和解决方法&#xff1a; 未将所有分支克隆下来&#xff1a;默认情况下&#xff0c;Git只会克隆远程仓库的主分支。如果您想要克隆其他分支&#xff0c;可以使用以下…...

山东潍坊戴尔存储服务器维修 md3800f raid恢复

山东戴尔存储故障维修 存储型号&#xff1a;DELL PowerVault md3800f 故障问题&#xff1a;存储除尘后通电开机&#xff0c;发现有物理硬盘没有插到位&#xff0c;用户带电拔插了多块物理盘&#xff0c;导致关连的磁盘阵列掉线&#xff0c;卷失败&#xff1b; 处理方式&#xf…...

Hive企业级调优[6]——HQL语法优化之任务并行度

目录 HQL语法优化之任务并行度 优化说明 Map端并行度 Reduce端并行度 优化案例 HQL语法优化之任务并行度 优化说明 对于分布式计算任务来说&#xff0c;设置一个合理的并行度至关重要。Hive的计算任务依赖于MapReduce框架来完成&#xff0c;因此并行度的调整需要从Map端和…...

Excel 冻结多行多列

背景 版本&#xff1a;office 2021 专业版 无法像下图内某些版本一样&#xff0c;识别选中框选的多行多列。 如下选中后毫无反应&#xff0c;点击【视图】->【冻结窗口】->【冻结窗格】后自动设置为冻结第一列。 操作 如下&#xff0c;要把前两排冻结起来。 选择 C1&a…...

基于微信小程序的智慧物业管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

【论文笔记】BEVNeXt: Reviving Dense BEV Frameworks for 3D Object Detection

原文链接&#xff1a;https://arxiv.org/pdf/2312.01696 简介&#xff1a;最近&#xff0c;在摄像头3D目标检测任务中&#xff0c;基于查询的Transformer解码器正在超越传统密集BEV方法。但密集BEV框架有着更好的深度估计和目标定位能力&#xff0c;能全面精确地描绘3D场景。本…...

基于open-gpu-kernel-modules的p2p vram映射bar1提高通信效率

背景 bar1 Base Address Register 1 用于内存映射的寄存器&#xff0c;定义了设备的内存映射区域&#xff0c;BAR1专门分配给gpu的一部分内存区域&#xff0c;允许cpu通过pcie总线直接访问显存VRAM中的数据。但bar1的大小是有限的&#xff0c;在常规的4090上&#xff0c;bar1只…...

java之斗地主部分功能的实现

今天我们要实现斗地主中发牌和洗牌这两个功能&#xff0c;该如何去实现呢&#xff1f; 1.创建牌类&#xff1a;52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card)&#xff1a;包含大小和花色。 public class Card { //单张牌的大小及类型/…...

我的AI工具箱Tauri版-VideoIntroductionClipCut视频介绍混剪

本教程基于自研的AI工具箱Tauri版进行VideoIntroductionClipCut视频介绍混剪。 本项目为自研的AI工具箱Tauri版中的视频剪辑模块&#xff0c;专注于自动生成视频介绍片段。该模块名为 VideoIntroductionClipCut&#xff0c;用户可以通过该工具快速进行视频的混剪和介绍内容的生…...

【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】011 - 第一个用户空间进程 init 进程 第一阶段初始化过程 源码分析

【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】011 - 第一个用户空间进程 init 进程 第一阶段初始化过程 源码分析 系列文章汇总:《鸿蒙OH-v5.0源码分析之 Uboot+Kernel 部分】000 - 文章链接汇总》 本文链接:《【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】011 - 第一个用户空…...

MyBatis 源码解析:Mapper 文件加载与解析

引言 在 MyBatis 中&#xff0c;Mapper 文件扮演了至关重要的角色&#xff0c;它通过 SQL 映射文件来定义数据库查询操作和 Java 对象之间的映射关系。Mapper 文件通常是以 XML 格式存储的&#xff0c;包含了 SQL 语句以及与 Java 对象的对应关系。在本篇文章中&#xff0c;我…...

(11)(2.1.2) DShot ESCs(二)

文章目录 前言 3 配置伺服功能 4 检查RC横幅 5 参数说明 前言 DShot 是一种数字 ESC 协议&#xff0c;它允许快速、高分辨率的数字通信&#xff0c;可以改善飞行器控制&#xff0c;这在多旋翼和 quadplane 应用中特别有用。 3 配置伺服功能 如上所述&#xff0c;如果使用…...

yolov5/8/9模型在COCO分割数据集上的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 1.COCO数据集介绍 COCO数据集&#xff0c;全称为Microsoft Common Objects in Context&#xff0c;是微软于2014年出资标注的…...

技术周总结 09.16~09.22 周日(架构 C# 数据库)

文章目录 一、09.16 周一1.1&#xff09;问题01&#xff1a; 软件质量属性中"质量属性场景"、"质量属性环境分析"、"质量属性效用树"、"质量属性需求用例分析"分别是什么&#xff1f;1.2&#xff09;问题02&#xff1a; 软件质量属性中…...

【java实现json转化为CSV文件】

文章目录 JSON文件中的数据格式测试文件转换的接口 JSON文件中的数据格式 单条数据展开后如下&#xff1a; {"text": "《邪少兵王》是冰火未央写的网络小说连载于旗峰天下","spo_list":[{"predicate": "作者", "objec…...

MySQL索引知识个人笔记总结(持续整理)

本篇笔记是个人整理的索引知识总结&#xff0c;刚开始有点乱&#xff0c;后续会一直边学边整理边总结 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。就好比索引就是数据的目录 索引结构 Btree索引,Hash索引,Full-text索引&#xff0c;R-tree(空…...

ReKep——李飞飞团队提出的让机器人具备空间智能:基于视觉语言模型GPT-4o和关系关键点约束

前言 由于工厂、车厂的任务需求场景非常明确&#xff0c;加之自今年年初以来&#xff0c;我司在机器人这个方向的持续大力度投入(包括南京、长沙两地机器人开发团队的先后组建)&#xff0c;使得近期我司七月接到了不少来自车厂/工厂的订单&#xff0c;比如其中的三个例子&…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...

ubuntu清理垃圾

windows和ubuntu 双系统&#xff0c;ubuntu 150GB&#xff0c;开发用&#xff0c;基本不装太多软件。但是磁盘基本用完。 1、查看home目录 sudo du -h -d 1 $HOME | grep -v K 上面的命令查看$HOME一级目录大小&#xff0c;发现 .cache 有26GB&#xff0c;.local 有几个GB&am…...