golang介绍,特点,项目结构,基本变量类型与声明介绍(数组,切片,映射),控制流语句介绍(条件,循环,switch case)
目录
golang
介绍
面向并发
面向组合
特点
项目结构
图示
入口文件 main.go
基本变量类型与声明
介绍
声明变量
常量
字符串(string)
字符串格式化
空接口类型
数组
切片
创建对象
追加元素
复制切片
map(映射)
创建对象
使用
多重赋值
控制流语句
if else
循环
switch case语句
golang
介绍
Go(也叫 Golang)是由 Google 开发的开源编程语言,设计目标是简洁、效率和高并发
- 自从 2009 年发布以来,Go 迅速发展,特别是在云计算、微服务、容器化(如 Docker 和 Kubernetes)等领域得到了广泛应用
- Go 语言是一门面向并发和面向组合的语言
面向并发
Go 的并发模型通过 goroutine 和 channel 来实现轻量级的并发
- goroutine:Go 通过轻量级的线程——goroutine,支持并发编程,允许程序同时执行多个任务。Goroutines 的创建和切换成本非常低,比传统线程更高效
- channel:Go 通过 channel 实现 goroutine 之间的通信,确保数据在并发环境中的安全传递。Go 使用 通信顺序进程(CSP)模型,通过管道(channel)将数据从一个 goroutine 传递到另一个
面向组合
Go 语言的设计偏向 组合 而非 继承
- 这使得 Go 在实现面向对象编程时,避免了传统oop中的类继承层次 (虽然它有一些支持面向对象编程的特性,但它并不遵循经典的面向对象范式)
- 提供了结构体(struct)和接口(interface)来实现对象行为
特点
高性能高并发
- 内置对高并发的支持,不需要寻找经过高性能优化的第三方库
- 只需要应用标准库或基于标准库开发的第三方库即可
语法类似c语言,但是简化版,非常简洁
- 去除了许多其他编程语言中常见的复杂特性
标准库功能丰富
- 涵盖了从网络、加密到并发等多个方面的功能
工具链完善
- 内置了单元测试框架
静态编译
- 不需要附加其他东西,部署方便快捷
快速编译
- 能快速构建并测试代码
跨平台
- 开发和部署的过程非常简单
垃圾回收机制
- 不需要考虑内存分配释放,类似java
项目结构
图示
入口文件 main.go
package main
- 包声明
- 每个 Go 程序都需要一个main包
import (" "...)
- 导入语句
- 这里的import语句导入了两个标准库:fmt,os
func main() { }
- 主函数,程序的入口点
基本变量类型与声明
介绍
声明变量
var 变量名 = value
- 会自动根据值类型推导变量类型
或是显式写出类型:
- var 变量名 类型 = value
- 变量名 := 类型(value)
常量
将声明变量时的var -> const
字符串(string)
go的内置类型
- 字符串包 -- strings
可以对字符串直接使用运算符(优先级和c/c++类似)
- 比如: +拼接
字符串格式化
Go 语言使用
fmt
包进行字符串格式化,可以根据需求灵活地控制输出格式
- 可以使用%v代表任意类型的变量,而不需要区分数字/字符串...的区别
- %+v 得到详细结构:
- %#v 得到进一步详细的结构:
- %T 打印变量的类型:
浮点数表示和c/c++相同
- %f 标准浮点数格式
- 且可以限制小数位数,比如%2f
空接口类型
数组
var 数组名 [元素个数]元素类型
- 支持多维数组
- 使用上也没有变化,依然是[ ]
切片
可变长度的数组
创建对象
切片字面量创建切片:
- slice := []元素类型{值1, 值2 ...}
- 也可以是个空切片 -- emptySlice := make([]int, 0)
使用make创建切片:
- make([]元素类型, 初始长度(必须指定), capacity)
从数组/其他切片中切割创建切片:
- slice := arr[起始索引:结束索引] (前闭后开区间)
追加元素
可以使用append()追加元素,根据需要动态扩展切片的容量
- 一次可添加多个元素
- 注意,append必须要赋值回原对象
复制切片
copy()用于从一个切片复制元素到另一个切片
- 它不会改变原切片,但会返回实际复制的元素数量
直接复制:
索引复制:
- 切片名(位置1:位置2) 前闭后开
省略位置参数:
- 可以省略索引中的一些位置,代表从头取 / 取到尾 / 全部取
map(映射)
类似于其他语言中的哈希表或字典
- 随机顺序存储,存储键值对
创建对象
字面量直接初始化:
- mapVariable := map[key值类型]value类型{key1: value1, key2: value2, ...}
make创建:
- make(map[key值类型]value类型, 初始容量(可省略))
使用
使用方法和c++中的map相同
- 可以使用[ ]
- delete()删除k-v对
多重赋值
- 可以使用两个变量来接收value值 和 是否存在某key值(bool类型),可以检查一个键是否存在于映射中
控制流语句
if else
if else 语法基本不变
- 只是不需要写if / else if后面的括号
- 并且,if后面必须要加{ },而不能在只有一行语句的情况下写成同一行
循环
循环仅有for循环
- 相当于其他循环被并入进去了
- 语法并没有变化,只是和if else一样不需要加括号
无条件:
- for {} 代表死循环
带条件:
- for 循环条件 {}
带初始化和后处理:
- 和c/c++语法一样,只是没有括号
同时,continue,break依然被使用
switch case语句
基本语法不变,只是:
- switch后的变量不需要加( )
- 每个case语句之间自动带有[添加break后]的效果 -- 它不会像c/c++一样如果不加break就一直执行下去,它只会执行其中一个分支
并且它还增加了功能
- switch后可以不加变量,直接跳转到分支进行判断,可以代替多个if else嵌套体使用
相关文章:
golang介绍,特点,项目结构,基本变量类型与声明介绍(数组,切片,映射),控制流语句介绍(条件,循环,switch case)
目录 golang 介绍 面向并发 面向组合 特点 项目结构 图示 入口文件 main.go 基本变量类型与声明 介绍 声明变量 常量 字符串(string) 字符串格式化 空接口类型 数组 切片 创建对象 追加元素 复制切片 map(映射) 创建对象 使用 多重赋值 控制流语句…...
大语言模型学习--本地部署DeepSeek
本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型(LLM)本地化部署与管理工具,旨在简化在本地计算机上运行和管理大语言模型…...
力扣-动态规划-53 最大子数组和
思路 dp数组定义:以i为结尾的字符串的最大子数组和为dp[i]递推公式: dp[i] max(nums[i], dp[i-1] nums[i]);dp数组初始化:dp[0] nums[0];遍历顺序:顺序时间复杂度: 代码 class Solution { public:int maxS…...
论文阅读和代码实现EfficientDet(BiFPN)
BiFPN 采用双向特征融合,让 P3 和 P4 不仅能获取来自 Backbone 的信息,还可以有效吸收 P5 的高级语义特征,增强小目标的判别能力 通过 加权特征融合(Weighted Feature Fusion),BiFPN 让 P3 层能够 自动调整…...
[杂学笔记] 封装、继承、多态,堆和栈的区别,堆和栈的区别 ,托管与非托管 ,c++的垃圾回收机制 , 实现一个单例模式 注意事项
文章目录 1.封装、继承、多态2. 堆和栈的区别3.指针和引用的区别4. 托管与非托管5. c的垃圾回收机制6. 实现一个单例模式 注意事项 1.封装、继承、多态 封装就是将数据和内部的方法封装到一个类中,对外隐藏内部实现细节,但是留下了公共接口提供给外部使…...
c++ std::bind、std::bind_front使用笔记
c std::bind、std::bind_front使用笔记 std::bind 和 std::bind_front 的使用说明std::bind (C11 引入)std::bind_front (C20 引入) 应用场景应用注意事项应用注意事项的例子 std::bind 和 std::bind_front 的使用说明 std::bind (C11 引入) std::bind 用于创建一个新的可调用…...
神策数据严正声明
近日,我们发现有不法分子冒充神策网络科技(北京)有限公司(以下简称”神策数据”)的名义,发布虚假的招聘广告、面试邀请,企图误导求职者并进行不法行为。对此,我司发布严正声明&#…...
vue+elementui 实现上传文件/导入文件的功能
vueelementui 实现上传文件/导入文件的功能 1. 上传组件 <el-form-item label"上传文件:"><el-uploadaction"":file-list"fileList":show-file-list"false":http-request"handUpLoad"drag:limit"…...
FastGPT 引申:知识库辅助开发(代码符号自动提取与文件匹配工具详解)
文章目录 FastGPT 引申:知识库辅助开发(代码符号自动提取与文件匹配工具详解)1. 符号提取 prompt2. 文件查询 prompt3. 总结 FastGPT 引申:知识库辅助开发(代码符号自动提取与文件匹配工具详解) 在开发过程…...
李国杰院士 “七问” DeepSeek:深度剖析 AI 发展新态势
李国杰院士 “七问” DeepSeek:深度剖析 AI 发展新态势 在人工智能领域的探索之路上,李国杰院士凭借深厚的学术造诣和前瞻性的眼光,成为指引方向的重要灯塔。 李国杰院士任职于中国科学院计算技术研究所,担任研究员一职。他不仅是…...
C#中泛型的协变和逆变
协变: 在泛型接口中,使用out关键字可以声明协变。这意味着接口的泛型参数只能作为返回类型出现,而不能作为方法的参数类型。 示例:泛型接口中的协变 假设我们有一个基类Animal和一个派生类Dog: csharp复制 public…...
transformer架构解析{掩码,(自)注意力机制,多头(自)注意力机制}(含代码)-3
目录 前言 掩码张量 什么是掩码张量 掩码张量的作用 生成掩码张量实现 注意力机制 学习目标 注意力计算规则 注意力和自注意力 注意力机制 注意力机制计算规则的代码实现 多头注意力机制 学习目标 什么是多头注意力机制 多头注意力计算机制的作用 多头注意力机…...
SpringBoot生成唯一ID的方式
1.为什么要生成唯一ID? 数据唯一性:每个记录都需要有一个独一无二的标识符来确保数据的唯一性。这可以避免重复的数据行,并有助于准确地查询、更新或删除特定的记录。 数据完整性:通过使用唯一ID,可以保证数据库中的数…...
认识时钟树
时钟源 高速外部震荡器HSE 低速外部震荡器LSE 高速内部震荡器HSI 低速内部震荡器LSI 易混淆点: RC(Resistor-Capacitor,电阻-电容振荡器)一般是内部时钟源 RTC(Real-Time Clock,实时时钟)…...
NLP如何训练AI模型以理解知识
一、自然语言处理(NLP)的定义与核心目标 1. 什么是自然语言处理? NLP是计算机科学与人工智能的交叉领域,旨在让机器具备以下能力: • 理解:解析人类语言(文本或语音)的语法、语义和…...
linux如何在某个文件夹下查看所有文件(层级只到当前文件夹的两层)并找到‘XXXX’ 这个单词
问了AI写的不错,记录一下,排查一些报错的时候比较好用 在 Linux 中,您可以通过命令行工具查看某个文件夹下的所有文件(限制到当前文件夹及其子文件夹两层深度),并搜索包含特定单词(如 XXXXX&am…...
Android 常见View的防抖
在开发Android应用时,我们经常会遇到用户快速点击按钮或者频繁触发某个事件的情况。这种行为可能会导致不必要的重复操作,例如多次提交表单、重复加载数据等。为了避免这些问题,我们需要对这些事件进行防抖处理。本文将详细介绍如何在Kotlin中…...
Unity打包到webgl鼠标图标大小不正确
我使用了自定义鼠标纹理,打包出来发现鼠标特别的大,位置也不对劲 研究了一下,不考虑浏览器界面缩放的话,可以直接改import settings的最大尺寸,改成合适的尺寸。 暂时先这样解决吧 最后贴一个设置鼠标图标的代码 pub…...
CentOS 7中安装Dify
Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。尤其是我们本地部署DeepSeek等大模型时,会需要用到Dify来帮我们快捷的开发和应用。 大家可以参考学习它的中…...
爬蟲動態IP代理與數據採集穩定性
對於從事爬蟲開發的人來說,IP代理的使用直接影響了爬蟲的效率和穩定性。爬蟲的本質是模擬用戶訪問網站,通過抓取網頁內容來獲取所需數據。但大多數網站為了保護自己的數據或防止濫用,會設置諸如IP訪問頻率限制、登錄驗證甚至封禁等反爬蟲措施…...
excel 斜向拆分单元格
右键-合并单元格 右键-设置单元格格式-边框 在设置好分割线后,你可以开始输入文字。 需要注意的是,文字并不会自动分成上下两行。 为了达到你期望的效果,你可以通过 同过左对齐、上对齐 空格键或使用【AltEnter】组合键来调整单元格中内容的…...
React Native 实现滑一点点内容区块指示器也滑一点点
效果图如上,内容滑一点点,指示器也按比例话一点点,列表宽度跟数据有关。 实现思路如下: 1.监听列表滑动事件,获取列表横向滑动距离,假设为A; 2.获取列表的宽度,及列表可滑动的宽度…...
解决Vscode项目同时运行两个项目终端无法自动叠加的问题
终端(如命令行工具或服务进程)无法自动“叠加”使用同一资源(如端口号、进程ID等)的核心原因在于操作系统的资源管理机制和网络协议规范的限制。以下是具体分析: 以下是解决 VSCode 同时运行两个项目时终端被前一个占…...
vuex中的state是响应式的吗?
在 Vue.js 中,Vuex 的 state 是响应式的。这意味着当你更改 state 中的数据时,依赖于这些数据的 Vue 组件会自动更新。这是通过 Vue 的响应式系统实现的,该系统使用了 ES6 的 Proxy 对象来监听数据的变化。 当你在 Vuex 中定义了一个 state …...
k8s面试题总结(九)
1.K8s中pod删除失败,有哪些情况?如何解决? Pod删除失败的情况: (1) Pod被其他资源(如Deployment,ReplicaSet)引用,无法删除pod 解决:先删除引用该pod的资源,再删除pod…...
【JQuery—前端快速入门】JQuery 操作元素
JQuery 操作元素 1. 获取/修改元素内容 三个简单的获取元素的方法: 这三个方法即可以获取元素的内容,又可以设置元素的内容. 有参数时,就进行元素的值设置,没有参数时,就进行元素内容的获取. 接下来,我们需…...
三维数据可视化与表面重建:Marching Cubes算法的原理与应用
1. 引言 随着现代医学影像技术的飞速发展,三维数据的可视化与重建已成为医学研究、临床诊断和手术规划的重要工具。在众多三维重建算法中,Marching Cubes算法因其高效、稳定的特性成为从离散数据场中提取等值面的经典方法。本报告将深入探讨Marching Cu…...
网络变压器的主要电性参数与测试方法(2)
Hqst盈盛(华强盛)电子导读:网络变压器的主要电性参数与测试方法(2).. 今天我们继续来看看网络变压器的2个主要电性参数与它的测试方法: 1. 线圈间分布电容Cp:线圈间杂散静电容 测试条件:100KHz/0.1…...
端到端自动驾驶——cnn网络搭建
论文参考:https://arxiv.org/abs/1604.07316 demo 今天主要来看一个如何通过图像直接到控制的自动驾驶端到端的项目,首先需要配置好我的仿真环境,下载软件udacity: https://d17h27t6h515a5.cloudfront.net/topher/2016/November…...
# 【Unity】【游戏开发】赛车游戏中碰撞加速的实现方法
背景 在赛车类游戏开发中,常常需要实现赛车在碰撞某些道具或对象后加速的功能。例如,当赛车经过加速带或碰撞加速道具时,速度会瞬间增加,使游戏更具动态性和可玩性。本文将介绍一种通用的实现方式,并分析其逻辑。 分析 加速的核心逻辑如下: 判断碰撞条件:检测赛车是否…...
Dubbo本地服务调试
本地服务之间调试 参考这个文档: Dubbo本地调试 注意事项 本地主服务调用本地另外一个子服务,dubbo端口号与子服务的WEB端口号不一致。要查看子服务dubbo的配置文件,设置的rpc端口号是多少主服务中,最好在dubbo的配置文件&…...
SqlSugar 语法糖推荐方式
//方式1:var dd _repository._Db.Queryable<ConfigAggregateRoot, UserRoleEntity>((o, p) > o.Id p.Id).Select((o, p) > new{o.Id,o.Remark,p.RoleId,});//方式2:不推荐使用,建议优先使用 Lambda 表达式,因为它更…...
爬虫逆向实战小记——解决captcha滑动验证码
注意!!!!某XX网站实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! IGh0dHBzOi8vY2FwdGNoYS5ydWlqaWUuY29tLmNuLw 第一步: 分析请求网址和响应内容 (1)通过观察,滑…...
printf 与前置++、后置++、前置--、后置-- 的关系
# 前置和前置-- 先看一段代码 大家是不是认为printf输出的是 2 3 3 2 1 1 但是实际输出的是 3 3 3 1 1 1 在这两行printf函数代码里,编译器会先计算 a 和 --a 的值,然后再 从右向左 开始输出。 printf函数中,如果有多个…...
【Web前端开发】---HTML标签及标签属性
1、单标签与双标签 HTML标签分为:双标签、单标签。 例如: <marquee>你好</marquee> 示例: 双标签:<标签名>标签体</标签名> 单标签:<标签名/>(注意:/可以省…...
【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析
DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…...
【赵渝强老师】监控Redis
对运行状态的Redis实例进行监控是运维管理中非常重要的内容,包括:监控Redis的内存、监控Redis的吞吐量、监控Redis的运行时信息和监控Redis的延时。通过Redis提供的监控命令便能非常方便地实现对各项指标的监控。 一、监控Redis的内存 视频讲解如下 【…...
RocketMQ顺序消费机制
RocketMQ的顺序消费机制通过生产端和消费端的协同设计实现,其核心在于局部顺序性,即保证同一队列(MessageQueue)内的消息严格按发送顺序消费。以下是详细机制解析及关键源码实现: 一、顺序消费的核心机制 1. 生产端路…...
新装的conda 以及pycharm未能正确初始化,或conda环境变量配置错误问题解决!!!
Windows PowerShell 版权所有(C) Microsoft Corporation。保留所有权利。 安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows PS E:\Dev_project\MyProjects> conda cativate py12 usage: conda-script.py [-h…...
通往 AI 之路:Python 机器学习入门-线性代数
2.1 线性代数(机器学习的核心) 线性代数是机器学习的基础之一,许多核心算法都依赖矩阵运算。本章将介绍线性代数中的基本概念,包括标量、向量、矩阵、矩阵运算、特征值与特征向量,以及奇异值分解(SVD&…...
2025国家护网HVV高频面试题总结来了03(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 0x1 高频面试题第一套 0x2 高频面试题第二套 0x3 高频面试题第三套 0x4高频面试题第四套 0x1 高频面试题…...
内容中台与企业内容管理架构解析
内容中台技术架构解析 内容中台的技术架构以数据资产化和服务API化为核心,通过解耦内容生产与消费环节构建数字化基础设施。其架构通常包含统一内容池、智能处理引擎和开放接口层三大模块:统一内容池通过标准化元数据模型对多源异构内容进行结构化存储&…...
希音(Shein)前端开发面试题集锦和参考答案
用 Node 写过什么工具或 npm 包 在实际开发中,使用 Node 编写过多种实用工具和 npm 包。 自动化构建工具 开发了一个简单的自动化构建工具,用于处理前端项目的资源压缩和合并。在前端项目中,为了优化性能,需要对 CSS 和 JavaScript 文件进行压缩,减少文件体积,同时将多个…...
《一个端粒到端粒的参考基因组为木瓜中五环三萜类化合物生物合成提供了遗传学见解》
A telomere-to-telomere reference genome provides genetic insight into the pentacyclic triterpenoid biosynthesis in Chaenomeles speciosa Amplification of transposable elements 转座元件的扩增 Sequence mining disclosed that TEs were one main event in the ex…...
使用easyocr、PyPDF2对图像及PDF文档进行识别
一、概述 本 Python 脚本的主要功能是对当前目录及其子目录下的图片和 PDF 文件进行光学字符识别(OCR)处理。它使用 easyocr 库处理图片中的文字,使用 PyPDF2 库提取 PDF 文件中的文本,并将处理结果保存为文本文件。同时ÿ…...
用AI学安卓游戏开发1——控制小球上下左右移动2
业务逻辑:初始化小球随机自有移动,遇到屏幕边缘反弹,摇杆介入后小球停止自有移动,按照摇杆控制方向移动。 https://download.csdn.net/download/AnalogElectronic/90453667 https://download.csdn.net/download/AnalogElectronic…...
计算机毕业设计SpringBoot+Vue.js医院挂号就诊系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
说一下redis事务底层原理
Redis事务 1. 事务的基本流程 Redis 事务通过 MULTI、EXEC、WATCH 等命令实现,底层原理可以分为以下几个步骤: (1) MULTI 命令 当客户端发送 MULTI 命令时,Redis 会将客户端标记为“事务模式”。在事务模式下,客户端发送的所有…...
eNSP中AR2220、AR201、AR1220、AR2240、AR3260、Router、NE40E、NE5000E、NE9000、CX路由器学习笔记
eNSP中常见华为路由器型号的接口特性详解及横向对比,重点关注接口类型、扩展能力和适用场景: 缩写解释: LPU:Line Processing Unit(线路处理单元) SPU:Service Processing Unit(业务…...
FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)
文章目录 FastGPT 引申:借鉴 FastGPT 基于MySQL ES 实现知识库(含表结构以及核心代码)一、整体思路二、存储结构2.1 MySQL 表结构(1) knowledge_base_dataset(2) knowledge_base_data(3) knowledge_base_index(4) ai_kb_relation 2.2 Elasti…...