Go语言基础:标识符、关键字、变量、常量、iota

news2024/11/20 20:34:50

一、标识符

        在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。

二、关键字

        关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。

        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

        Go语言中还有37个保留字:

    Constants:    true  false  iota  nil

        Types:    int  int8  int16  int32  int64  
                  uint  uint8  uint16  uint32  uint64  uintptr
                  float32  float64  complex128  complex64
                  bool  byte  rune  string  error

    Functions:   make  len  cap  new  append  copy  close  delete
                 complex  real  imag
                 panic  recover

三、变量

1. 变量声明

        Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明,并且Go语言的变量声明后必须使用

        Go语言变量声明格式:

var 变量名 变量类型
//变量声明以关键字var开头
//变量类型放在变量的后面,行尾无需分号
//例如:
var name string
var age int
var res bool

        可以看出每声明一个变量就需要写var关键字会比较繁琐,go语言中还支持批量变量声明:

var (
    name string
    age int
    res bool
)

2. 变量初始化

        Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值。例如: 整型和浮点型变量的默认值为0;字符串变量的默认值为空字符串;布尔型变量默认为false;切片、函数、指针变量的默认为nil

        当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:

var 变量名 类型 = 表达式
//例如:
var name string = "zhangsan"
var age int = 18
//支持一次初始化多个变量
var name, age = "zhangsan", 18

3. 类型推导

        当我们将变量的类型省略时,编译器会自动根据等号右边的值来推导变量的类型完成初始化:

var name = "zhangsan"
var age = 18

4. 短变量声明

        在函数内部,可以使用更简略的 := 方式声明并初始化变量:

name := "zhangsan"
age := 18

5. 匿名变量

        在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量 匿名变量用一个下划线_表示,例如:

         匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 

四、常量

        常量是恒定不变的值,多用于定义程序运行期间不会改变的值。 常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值

(1)单个声明

const name = "zhangsan"
const age = 18

(2)批量声明

const(
    name = "zhangsan"
    age = 18
)

(3)const同时声明多个常量时,如果省略了值则表示和上面一行的值相同

五、iota

1. iota简介

        (1)iota是go语言的常量计数器,只能在常量的表达式中使用。

        (2)iota在const关键字出现时会被重置为0,const中每新增一行常量声明,就会使iota计数加一。

        (3)使用iota能简化常量定义,在定义枚举时比较有用。

2.  iota常见使用示例

(1)常量定义

(2)使用"_"跳过某些值

(3)iota声明中间插队

(4)定义数量级

(5)多个iota定义在一行

五、注意事项

1.函数外的每个语句都必须以关键字开始,如var、const、func等;

2.短变量声明(:=)不能在函数外使用;

3.匿名变量(_)多用于占位,表示忽略值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThreadPoolExecutor的应用和源码分析

前面描述的线程池的创建方式大都是Executors类中创建出来,基于ThreadPoolExecutor去new出来实现的。 我们为什么要自定义线程池 在线程池ThreadPoolExecutor中提供了7个参数,都作为非常核心的属性,在线程池去执行任务的时候,每个…

【Docker】容器化和虚拟化基础

Docker发展史 Jail(监狱)时代 1979 年 贝尔实验室发明 chroot chroot的设计原理是:把一个进程的文件系统隔离起来。 ​ chroot 系统调用可以将进程及其子进程的根目录更改为文件系统中的新位置。隔离以后,该进程无法访问到外面的文件,因此这…

管理类联考——逻辑——知识篇——论证推理——二、加强——haimian

考点分析 加强 年度 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023题量213325356 主要问法 以下哪项如果为真,最能加强上述结论的说服力?以下哪项如果为真,最能支持题干的论证? 解题思路 阅读问题,确定是否为加强题型&…

进程参数编程

问题 execve(...) 的参数分别是什么?有什么意义? 第一个参数是程序路径,第二个参数是进程参数,第三个参数是环境变量 再论 execve(...) main 函数 (默认进程入口) int main(int argc, char* argv[]) argc - 命令行参数个数argv…

java——jdbc编程

文章目录 JDBC的概念JDBC的常用APIJDBC示例代码PreparedStatementCallableStatement JDBC(Java Database Connectivity)是Java的一种数据库访问标准,它提供了一套API,使得我们可以通过Java程序来访问和操作各种关系型数据库。 下面…

从零开始手搓一个STM32与机智云的小项目——GPIO模拟时序控制外设2

文章目录 前言模块简介硬件介绍硬件连接通信时序DHT11的数据帧格式信号时序1. 起始信号2.应答信号(响应信号)3.接收数据0与14.获取数据5结束信号 输入输出切换实际效果 总结 前言 在上一篇中介绍了,使用GPIO模拟WS2812B的控制时序来实现对RGB灯的控制,本…

【开源与项目实战:开源实战】84 | 开源实战四(上):剖析Spring框架中蕴含的经典设计思想或原则

在 Java 世界里,Spring 框架已经几乎成为项目开发的必备框架。作为如此优秀和受欢迎的开源项目,它是我们源码阅读的首选材料之一,不管是设计思想,还是代码实现,都有很多值得我们学习的地方。接下来,我们就详…

Nginx服务的主配置文件 nginx.conf

目录 前言 一、Nginx.con位置 二、Nginx.com相关内容 三、Nginx.conf中配置块和指令 1、I/O时间配置 2、HTTP 配置 日志格式设定 总结 前言 Nginx 的主配置文件是 nginx.conf,它通常位于 Nginx 的安装目录下的 conf 文件夹中。主配置文件 nginx.conf 是 Ngin…

Rust语言从入门到入坑——(6)Rust组织管理

文章目录 0 引入1、组织概念1. 1、箱1. 2、包1. 3、模块 2、组织中权限2.1 权限2.2 模块引用2.2 Use 关键词 3、总结 0 引入 任何一门编程语言如果不能组织代码都是难以深入的,几乎没有一个软件产品是由一个源文件编译而成的。本教程到目前为止所有的程序都是在一个…

java——内部类和异常处理

文章目录 内部类成员内部类局部内部类匿名内部类静态内部类 异常处理异常捕获与处理多重异常捕获和处理抛出异常 内部类 Java内部类(Inner Class)是嵌套在其他类中的类,它可以访问外部类的成员变量和方法,同时也可以被外部类访问…

模拟电路系列文章-ADC驱动电路(下)

目录 概要 整体架构流程 技术名词解释 技术细节 1.低阻输出,以减小误差 2.抗混叠 3.电源级保护 小结 概要 提示:这里可以添加技术概要 一个模拟电压信号,在进入ADC 的输入端之前,一般都需要增加一级驱动电路(Driver]。但是&#…

C语言基础:指针的使用

本文结合工作经验,研究C语言中指针的用法。 文章目录 1 指针的概念2 用法与使用场景2.1 函数的指针参数2.1.1 基本概念2.1.2 使用场景1-函数返回多个值2.1.3 使用场景2-减少函数参数 2.2 void*指针2.2.1 基本概念2.2.2 使用场景 2.3 空指针2.4 const指针2.4.1 基本…

三分钟学习一个python小知识5-----------我的对python中pandas的理解, 我列举了关于pandas常用的4个例子来深入理解pandas

这里写目录标题 1、Pandas是什么2、Pandas的常用功能:2.1. 读取和写入数据2.2. 数据清洗和转换2.3. 数据分析和计算2.4. 数据可视化总结 1、Pandas是什么 Pandas是Python中一个非常流行的数据处理和分析库,可以使用它对数据进行读取、清洗、转换、分析和…

【动态规划算法练习】day4

文章目录 一、213. 打家劫舍 II1.题目简介2.解题思路3.代码4.运行结果 二、740. 删除并获得点数1.题目简介2.解题思路3.代码4.运行结果 三、剑指 Offer II 091. 粉刷房子1.题目简介2.解题思路3.代码4.运行结果 总结 一、213. 打家劫舍 II 1.题目简介 213. 打家劫舍 II 你是一…

数字IC工程师的护城河是什么?

每个人都希望能够增加⾃⼰的核心竞争⼒,然后延展职业⽣涯。 可能IC研发工程师基本上都会有个40岁危机? 时代背景是最⼤的变数,它改变了⼈才供需和技术⾛向,⽐如做处理器 core曾经是屠⻰术,⽽现在是⻩⾦时代 处理器 cor…

堆和优先队列

文章目录 堆维护堆的性质建堆堆排序算法 优先队列详解cpp标准库 priority_queue 参考文献 堆 虽然“堆”这个词源自堆排序,但是目前它已经被引申为“垃圾存储机制”,例如在Java和Lisp语言中所定义的。强调一下,我们使用的堆不是垃圾收集存储…

设计模式之访问者模式笔记

设计模式之访问者模式笔记 说明Iterator(访问者)目录访问者模式示例类图抽象访问者角色类抽象元素角色类宠物猫类宠物狗类自己类其他人类家类测试类 说明 记录下学习设计模式-访问者模式的写法。JDK使用版本为1.8版本。 Iterator(访问者) 意图:表示一个作用于某对象结构中的…

平面设计师实习报告范文十篇

平面设计师实习报告范文1 经过了四年的系统性理论学习,使我对平面设计有了基本掌握,对于平面设计这个专业也有了一个系统的了解和掌握。我们即将离开大学校园,作为平面设计专业的毕业生,心中想得更多的是如何去做好一个平面设计师…

ETCD集群运维

ETCD集群运维 ETCD扩容节点ETCD参数调优时间参数快照磁盘网络 监控维护压缩历史版本消除碎片化存储配额快照备份 灾难恢复快照恢复 etcd gateway作用什么时候不应该使用网关启动方式 gRPC代理可扩展的watch API租约请求缓存启动gRPC代理 ETCD扩容节点 节点1:10.1.1…

管理类联考——逻辑——知识篇——论证推理——一、削弱——haimian

削弱 考点分析 削弱 年度 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023题量223262132 主要问法 以下哪项如果为真,则能最严重地削弱(反驳)上述结论?以下哪项如果为真,则最能削弱(反驳&#xff09…