【golang】派生数据类型---指针 标识符、关键字等

1、指针

对比C/C++中的指针,go语言中的指针显得极为简洁,只是简单的获取某个空间的地址 或者 根据指针变量中的内容 获取对应存储空间的内容等操作。
具体示例如下:
在这里插入图片描述
go中使用指针需要注意的点:

  1. 可以通过指针改变它所指向的内存空间中的内容
  2. 指针变量接收的一定是具体的值
  3. 指针变量的地址必须相匹配
  4. 基本数据类型都有对应的指针类型,形为 *数据类型

2、标识符定义规则:

 1、组成部分:字母、数字、下划线
 2、注意:不能以数字开头、严格区分大小写、不能包含空格、不可以使用GO中保留的关键字
 3、见名知意:增加可读性
 4、下划线 “_”在go中本身是一种特殊的标识符,称之为空标识符。所以下划线仅能作为占位符使用,不能单独作为标识符使用。
 5、起名规则
  包名:package的名字尽量和目录保持一致,尽量采取有意义的包名,做到简短、有意义但不要和标准库发生冲突
  变量名、函数名、常量名:采用驼峰法
  注意:
   如果变量名、函数名、常量名首字母大写,则可以被其他的包访问,如果首字母小写,则只能在本包中使用。
   import导入语句通常放在文件开头包申明的下面
   导入的包名需要使用双引号引起来
   包名是从 $GOPATH/src/后开始计算的,使用 / 进行路径分隔

3、关键字 && 预定义的标识符

  1. 关键字就是程序发明者规定的具有特殊意义的单词,又叫保留字。go语言中一共有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

作用:这里做一简单介绍,后续遇到详细展开
在这里插入图片描述

  1. 预定义标识符:go语言中一共有36个预定义标识符,包含基础数据类型和系统内嵌函数
    在这里插入图片描述
    运算符
    在这里插入图片描述
    注意:
     1、go中没有条件运算符(三目运算符)
     2、go中只有后置++,–;没有前置

4、输入相关,与用户交互

方式1:使用 Scanln函数,具体示例如下:
在这里插入图片描述
方式2:使用Scanf函数
在这里插入图片描述

5、go语言中的流程控制

顺序结构 、分支结构、 循环结构

分支结构
 if分支

//单分支
if 条件表达式 {逻辑代码
}
//多分支
if 条件表达式1 {逻辑1
} else if 条件表达式2 {逻辑2
} else if 条件表达式n {逻辑n
} else {xxx
}
//双分支
if 条件表达式1 {逻辑1
} else {xxx
}

 使用的注意事项:
  条件表达式左右的括号可以不写,go语言中建议不写
   if else if 与表达式之间一定要有空格
  在 golang中,{}是必须要有的,哪怕只有一行代码

 switch 分支

//基本语法
switch 表达式 {case1,值2...:语句块1case3,值4...:语句块2....default:语句块
}

 使用注意事项:
  1、switch后是一个表达式(常量值、变量、一个有返回值的函数均可以)
  2、case后的各个值的数据类型必须和switch后表达式的值类型一致
  3、case后可以跟多个表达式,使用逗号间隔
  4、case后面的表达式如果是常量值,则要求其不能重复
  5、case后面不需要带break,程序匹配到一个case后就会执行对应的代码块,然后退出这个switch,如果一个都匹配不到,则会进入default
  6、default语句不是必须的且位置是随意的,但是建议写上
  7、switch 后可以不带表达式当作if来使用,一般少见
  8、switch后面也可以直接定义一个变量用分号结束,不推荐
  9、switch穿透!利用fallthrough关键字。如果在case语句块后加fallthrough,则程序会据继续执行下一个case,这个就叫做switch穿透

循环结构

//语法结构
for 初始表达式; 布尔表达式; 迭代因子; {循环体;
}

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for循环在第一次反复之前需要进行初始化,即执行初始表达式,随后对布尔表达式进行判断,true—>执行循环体,false–>终止循环
在每一次循环过程中迭代因子不断递增 or 递减

for range结构:是Go语言特有的一种迭代结构,在许多场景下都非常实用。for range可以遍历数组、切片、字符串、map及通道。语法结构如下:

for key, val := range coll {.....
}

对break关键字的理解:跳出当前循环,即跳出离break最近的那一层循环

for i:=0; i < 4; i++ {for j:=0; j < 4; j++ {if(i == 2 && j == 2) {break;}}
}

在这里插入图片描述
如果想要break直接跳出整个循环,即跳出外层的for循环,需要使用一个新的概念,叫做 标签,具体示例如下:

lable:for i := 0; i < 4; i++ {for j := 0; j < 4; j++ {fmt.Printf("i: %v, j: %v \n", i, j)if i == 2 && j == 2 {break lable}}}

在这里插入图片描述
同理,continue 关键字也有着同样的用法,即 默认生效的是离他最近的for循环,但是可以通过加标签的方式达到对任意循环生效的效果。

goto
 Golang中的goto语句可以无条件的转移到程序中的指定行(比如打个标签lable,使用goto lable实现无条件跳转)
 goto语句通常与条件语句配合使用,可以来实现条件转移
 在Go程序设计中一般不建议使用goto语句,以免造成程序流程的混乱

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 )

代码示例 : <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Banner 轮播</title><style>/* 取消浏览器或者其它标签的默认的内外边距 */* {margin: 0;padding: 0;}/* 取消列表样式 主要是…

数据采集:selenium 获取某网站CDN 商家排名信息

写在前面 工作中遇到&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对大…

【内网穿透】搭建我的世界Java版服务器,公网远程联机

目录 前言 1. 搭建我的世界服务器 1.1 服务器安装java环境 1.2 配置服务端 2. 测试局域网联机 3. 公网远程联机 3.1 安装cpolar内网穿透 3.1.1 windows系统 3.1.2 linux系统&#xff08;支持一键自动安装脚本&#xff09; 3.2 创建隧道映射内网端口 3.3 测试公网远程…

【电源专题】18650圆柱电芯内部结构及器件

18650圆柱锂离子电池是一种直径为18mm、高度为65mm的锂离子电池,它最大的特点是拥有非常高的能量密度,它是比较成熟的锂离子电池,各方面系统质量稳定性较好,广泛适用于10千瓦时左右的电池容量场合,例如在、在手机、笔记本电脑等小型电器上。 常见的18650电池分为锂离子电池…

亚马逊云科技 re:Inforce 大会云安全合规与技术实践及 Security Jam 大赛,快来报名吧!...

‍‍ 2023年8月31日在北京 亚马逊云科技 re:Inforce 大会 首次登陆中国&#xff01; 我们期待您的莅临&#xff0c; 并与您一起迎接 AI 时代&#xff0c; 开启全面智能的安全旅程&#xff01; 在13:00-17:00的 培训与动手实验环节中 云安全合规与技术实践 及 Security Jam 大赛…

Python3 列表

Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。 Python 有 6 个序列的内置类型&#xff0c;但最常见的是列表和元组。 列表都可以进…

韶音骨传导耳机值得入手吗,韶音骨传导耳机可以水洗吗

韶音家的代表作可以说是OpenRun Pro骨传导耳机&#xff0c;在发声单元位置上采用了开孔的处理&#xff0c;佩戴上耳的时候发声单元可以贴合耳道&#xff0c;在低频延伸性&#xff0c;但在中高频的时候整体会出现震感&#xff0c;纤细的耳挂在佩戴的时候是有着不错的舒适度的&am…

农村农产品信息展示网站的设计与实现(论文+源码)_kaic

摘 要 随着软件技术的迅速发展,农产品信息展示的平台越来越多,传统的农产品显示方法将被计算机图形技术取代。这种网站技术主要把农产品的描述、农产品价格、农产品图片等内容&#xff0c;通过计算机网络的开发技术&#xff0c;在互联网上进行展示&#xff0c;然后通过计算机网…

单片机TVS/ESD二极管防护

TVS 瞬态电压抑制二极管Transient Voltage Suppressor ESD 静电释放二极管 Electro-Static discharge 这两种本质上都是二极管。都是利用了二极管正向导通、反向截止的特性。二极管在反向截止截止条件下&#xff0c;如果电压继续增大&#xff0c;将会引发雪崩&#xff0c;使得…

ubuntu20.04安装gcc5.4 g++5.4

在进行ubuntu20.04的系统中安装gcc g5.4中&#xff0c;会出现安装问题 1、pip安装&#xff0c;失败 2、使用apt-get install 进行安装时&#xff0c;提示没有候选项&#xff1b; 原因&#xff1a;ubuntu20.04的系统下&#xff0c;系统默认安装的gcc9.0的版本&#xff0c;默认…

7.Oracle视图创建与使用

1、视图的创建与使用 在所有进行的SQL语句之中&#xff0c;查询是最复杂的操作&#xff0c;而且查询还和具体的开发要求有关&#xff0c;那么在开发过程之中&#xff0c;程序员完成的并不是是和数据库的所有内容&#xff0c;而更多的是应该考虑到程序的设计结构。可以没有一个项…

WordPress使用子主题插件 Child Theme Wizard,即使主题升级也能够保留以前主题样式

修改WordPress网站样式&#xff0c;主题升级会导致自己定义设置的网站样式丢失&#xff0c;还需要重新设置&#xff0c;很繁琐工作量大&#xff0c;发现在WordPress 中有Child Theme Wizard子主题插件&#xff0c;使用Child Theme Wizard子主题插件&#xff0c;即使主题升级&am…

HTML-常见标签、HTML5新特性

HTML 软件架构 1.C/S架构 (1) C/S架构即Client/Server&#xff08;客户机/服务器&#xff09;结构。 (2) C/S 架构特点 ​ C/S结构在技术上很成熟&#xff0c;它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。但是该结构的程序是…

8年测试经验之谈 —— 接口自动化测试requests

1.什么是requests&#xff1f; requests是一个Python第三方库&#xff0c;处理URL资源特别方便 2.安装requests pip3 install requests 如果遇到Permission denied安装失败&#xff0c;请加上sudo重试 3.使用requests 3.1get请求方法 3.1.1基本的get请求 import reques…

如何使用CSS实现一个3D旋转效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 3D效果实现⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域…

python下载bilibili视频,下载合集,下载选集

一. 内容简介 bilibili视频下载&#xff0c;下载合集&#xff0c;下载选集 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接&#xff1a;https://pan.baidu.com/s/1tO8xSmaqqoTxHI9P_UkDBw?pwd1234 提取码&#xff1a;1234 三.主要流程 3.1 …

C语言-内存分布(STM32内存分析)

C/C内存分布 一、内存组成二、静态区域文本段 &#xff08;Text / 只读区域 RO&#xff09;已初始化读写数据段&#xff08;RW data -- Initialized Data Segment&#xff09;未初始化数据段&#xff08;BSS -- Block Started by Symbol&#xff09; 三、动态区域堆&#xff08…

【C++】list类的模拟实现

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、list类的模拟实现1.1 list的…

list(介绍与实现)

目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modififiers 1.2.6 list的迭代器失效 2. list的模拟实现 2.1 模拟实现list 2.2 list的反向迭代器 1.…

Spring详解

文章目录 一、引言1.1 原生web开发中存在哪些问题&#xff1f; 二、Spring框架2.1 概念2.2 访问与下载 三、Spring架构组成四、自定义工厂4.1 配置文件4.2 工厂类 五、构建Maven项目5.1 新建项目5.2 选择Maven目录5.3 GAV坐标 六、Spring环境搭建6.1 pom.xml中引入Spring常用依…