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嵌套体使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3.2-A-L1-2-第15讲-冒泡排序 mochen @denglexi

博观而约取 厚积而薄发 Observe extensively but select wisely; accumulate deeply but release sparingly. 每次比较两个相邻的元素,如果它们的顺序错误就把它 们交换过来。 每一轮进行两两比较,将该轮中最大/最小的值冒出来。 冒泡程序核心代码&#…

25、泛型

十二章、泛型 12-1 为何要有泛型 1、泛型:是一种标签。把元素的类型设计成一个参数,这个类型参数就叫做泛型 2、所谓泛型,就是允许在定义类、接口时通过一个标识表示类中 某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在…

[KEIL]单片机技巧 01

1、查看外设寄存器的值 配合对应的芯片开发手册以查看寄存器及其每一位的意义,可以解决90%以上的单纯的片内外设bug,学会如何通过寄存器的值来排外设上的蛊是嵌入式开发从小白到入门的重要一步,一定要善于使用这个工具,而不是外设…

TCP/IP 5层协议簇:网络层(IP数据包的格式、路由器原理)

目录 1. TCP/IP 5层协议簇 2. IP 三层包头协议 3. 路由器原理 4. 交换机和路由的对比 1. TCP/IP 5层协议簇 如下: 2. IP 三层包头协议 数据包如下:IP包头不是固定的,每一个数字是一个bit 其中数据部分是上层的内容,IP包头最…

免费轻巧多功能 PDF 处理工具:转换、压缩、提取一应俱全

软件技术 今天要给大家分享一款超实用的 PDF 处理工具,它免费又轻巧,如同随时待命的得力小帮手,功能之强大超乎想象,真的值得大家收藏。 这款工具是绿色版软件,解压后开启,满满的 PDF 处理功能便映入眼帘…

基于微信小程序的疫情互助平台(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,从2019年底新型冠状肺炎疫情的爆发以来,使很多工作的管理工作难度再上一层楼。为了在疫情期间能更好的维护信息管理&#xff0…

飞致云开源社区月度动态报告(2025年2月)

自2023年6月起,中国领先的开源软件公司飞致云以月度为单位发布《飞致云开源社区月度动态报告》,旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况,以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源运营数据概览&…

数据库拓展操作

目录 一、截断表: 操作目的: 操作内容: 性能影响: 基本语法: 例子: 二、插入查询结果: 基本语法: 例子: 三、聚合函数: 常用函数: 基…

在 Mac 上使用 Docker 安装宝塔并部署 LNMP 环境

前言 只因为在mac上没有找到合适的PHP开发集成环境,之前有安装了Eserver,但是安装一些常用PHP扩展有时候还是需要手动去编译添加。phpStudy也没有找到适合Mac的版本,在后面安装了Parallels Desktop虚拟机 来运行Ubuntu系统搭建了一套LNMP环境…

Node.js二:第一个Node.js应用

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 创建的时候我们需要用到VS code编写代码 我们先了解下 Node.js 应用是由哪几部分组成的: 1.引入 required 模块:我们可以使用 requi…

Excel基础(详细篇):总结易忽视的知识点,有用的细节操作

目录 基础篇Excel主要功能必会快捷键LotusExcel的文件类型工作表基本操作表项操作选中与缩放边框线 自动添加边框线格式刷设置斜线表头双/多斜线表头不变形的:双/多斜线表头插入多行、多列单元格/行列的移动冻结窗口 方便查看数据打印的常见问题Excel格式数字格式日期格式文本…

vue3:四嵌套路由的实现

一、前言 1、嵌套路由的含义 嵌套路由的核心思想是&#xff1a;在某个路由的组件内部&#xff0c;可以定义子路由&#xff0c;这些子路由会渲染在父路由组件的特定位置&#xff08;通常是 <router-view> 标签所在的位置&#xff09;。通过嵌套路由&#xff0c;你可以实…

【实战篇】【深度解析DeepSeek:从机器学习到深度学习的全场景落地指南】

一、机器学习模型:DeepSeek的降维打击 1.1 监督学习与无监督学习的"左右互搏" 监督学习就像学霸刷题——给标注数据(参考答案)训练模型。DeepSeek在信贷风控场景中,用逻辑回归模型分析百万级用户数据,通过特征工程挖掘出"凌晨3点频繁申请贷款"这类魔…

【Python 数据结构 2.时间复杂度和空间复杂度】

Life is a journey —— 25.2.28 一、引例&#xff1a;穷举法 1.单层循环 所谓穷举法&#xff0c;就是我们通常所说的枚举&#xff0c;就是把所有情况都遍历了的意思。 例&#xff1a;给定n&#xff08;n ≤ 1000&#xff09;个元素ai&#xff0c;求其中奇数有多少个 判断一…

计算机毕业设计SpringBoot+Vue.js社区智慧养老监护管理平台(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

西北工业大学计算机复试上机真题

西北工业大学计算机复试上机真题 历年西北工业大学计算机复试上机真题 西北工业大学计算机考研复试上机真题 2023西北工业大学计算机复试上机真题 2022西北工业大学计算机复试上机真题 在线评测地址&#xff1a;传送门 数组排序 题目描述 一组整数&#xff0c;由小到大排序…

kafka-web管理工具cmak

一. 背景&#xff1a; 日常运维工作中&#xff0c;采用cli的方式进行kafka集群的管理&#xff0c;还是比较繁琐的(指令复杂&#xff1f;)。为方便管理&#xff0c;可以选择一些开源的webui工具。 推荐使用cmak。 二. 关于cmak&#xff1a; cmak是 Yahoo 贡献的一款强大的 Apac…

数据结构(初阶)(七)----树和二叉树(堆,堆排序)

八&#xff0c;树与二叉树 树 概念与结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;⽽叶朝下的。 • 有⼀…

数据集笔记:新加坡 地铁(MRT)和轻轨(LRT)票价

数据连接 data.gov.sg 2024 年 12 月 28 日起生效的新加坡地铁票价 该数据集包含 MRT 和 LRT 票价的信息&#xff0c;包括&#xff1a; 票价类型&#xff08;Fare Type&#xff09;&#xff1a;成人票、学生票、老年人票、残障人士票等。适用时间&#xff08;Applicable Tim…

常用的AI文本大语言模型汇总

AI文本【大语言模型】 1、文心一言https://yiyan.baidu.com/ 2、海螺问问https://hailuoai.com/ 3、通义千问https://tongyi.aliyun.com/qianwen/ 4、KimiChat https://kimi.moonshot.cn/ 5、ChatGPThttps://chatgpt.com/ 6、魔塔GPT https://www.modelscope.cn/studios/iic…