【Go语言基础】变量和常量

【Go语言基础】变量和常量

用Go语言编写的程序都是从基本组件构成,而构成这些基本组件的是标识符,本章中将介绍到Go语言中使用到变量,常量以及基本数据类型。

1. 标识符

标识符是函数、变量、常量、自定义类型以及包的名称的总称,在Go语言中,标识符的命名遵循以下的规则:标识符任意字母或者下划线开始,后面可以跟任意的字符,数字或者下划线,并区分大小写,如:

a_1  // 合法标识符
_a1  // 合法标识符
1_a  // 非合法标识符

在Go语言中,标识符分为预定义标识符和可自定义标识符。预定义标识符是指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

2. 变量和常量

变量和常量是编程语言中最基本的组成元素,通过一个指定的标识符指向一块内存空间,程序中可以通过此标志符对内存的操作,根据内存空间中的内容是否能够被修改分为变量和常量,变量是指标志符指向的内存空间的内容是可改变的,而常量是指标志符指向的内存空间中的内容是不可改变的。

2.1. 变量

2.1.1. 变量声明

在Go语言中,变量是通过var关键字声明的,声明格式为:var identifier type。如:

var a int

定义了一个整形变量a,在没有初始化的情况下,整形变量默认为0。

2.1.2. 变量初始化

在定义了变量后需要对变量初始化,完整的初始化方式如下:

a = 1

对于新定义的变量,通常在声明变量的同时对变量初始化,初始化的方式为:

var a int = 1  // 完整声明+初始化
var b = 2  // 提供初始化值,可省略变量类型,由编译器⾃自动推断
c := 3  // 适用于局部变量

2.1.3. 多个变量的声明和初始化

  • 多个同类型的变量
var a, b int = 1,2
  • 多个不同类型的变量
var (
	a int
	b float32
)
a = 1
b = 2.1

2.2. 常量

2.2.1. 常量声明和初始化

常量值必须是编译期可确定的数字、字符串、布尔值,通过const关键字可以定义常量:

const s string = "hello world"
const a int = len(s)  // 在编译期运行的常量表达式

2.2.2. 预定义常量

Go语言中有一些预定义常量,如:truefalseiota。预声明标识符iota用在常量声明中,其初始值为0,在一组多个常量同时声明时,其值会自动加1,如:

const (
	a_1 = iota  // 0
	a_2 = iota  // 1
	a_3 = iota  // 2
)

2.2.3. 特殊的常量——枚举

在其他的语言中(如C语言中)用enum作为关键字表示枚举类型,枚举是一系列常量的表示,在Go中,通过const关键字来表示枚举类型,如:

func main() {
	const (
		Zero = iota
		One
		Two
		Three
	)

	fmt.Println(Zero)
	fmt.Println(One)
	fmt.Println(Two)
	fmt.Println(Three)
}

Read more

科普文:软件架构数据库系列之【MySQL数据库SQL通用语法】

科普文:软件架构数据库系列之【MySQL数据库SQL通用语法】

一、SQL通用语法 在学习具体的SQL语句之前,先来了解一下SQL语言的同于语法。 1). SQL语句可以单行或多行书写,以分号结尾。 2). SQL语句可以使用空格/缩进来增强语句的可读性。 3). MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。 4). 注释: 单行注释:-- 注释内容 或 # 注释内容 多行注释:/* 注释内容 */ 二、SQL分类 SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。 分类全称说明DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表字段)DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改DQLData Query Language数据查询语言,用来查询数据库中表的记录DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限 三、DDL

By Ne0inhk
科普文:软件架构Linux系列之【五种IO模型小结】

科普文:软件架构Linux系列之【五种IO模型小结】

概叙 什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll跟IO模型有什么关系?有几种经典IO模型呢?BIO、NIO、AIO到底有什么区别的?今天就做一个小结。 什么是IO呢? IO,英文全称是Input/Output,翻译过来就是 输入/输出。平时我们听得挺多,就是什么磁盘IO,网络IO。那IO到底是什么呢?是不是有种懵懵懂懂的感觉呀,好像大概知道它是什么,又好像说不清楚。 IO,即输入/输出,到底谁是输入?谁是输出呢?IO如果脱离了主体,就会让人疑惑。 计算机角度的IO 我们常说的输入输出,比较直观的意思就是 计算机的输入输出, 计算机就是主体。大家是否还记得,大学学 计算机组成原理的时候,有个 冯.诺依曼结构,它将计算机分成分为5个部分:运算器、控制器、存储器、输入设备、输出设备。

By Ne0inhk
科普文:Java基础系列之【IO面试一问一答】

科普文:Java基础系列之【IO面试一问一答】

1.什么是IO流? 它是一种数据的流从源头流到目的地。比如文件拷贝,输入流和输出流都包括了。输入流从文件中读取到进程(process)中,输出流从进程中读取数据然后写入到目标文件。 2.java中有几种类型的流? 按照单位大小:字符流、字节流。按照流的方向:输出流、输入流。 3.字节流和字符流哪个好?怎么选择? 1. 缓大多数情况下使用字节流会更好,因为字节流是字符流的包装,而大多数时候 IO 操作都是直接操作磁盘文件,所以这些流在传输时都是以字节的方式进行的(图片等都是按字节存储的) 2. 如果对于操作需要通过 IO 在内存中频繁处理字符串的情况使用字符流会好些,因为字符流具备缓冲区,提高了性能 4.读取数据量大的文件时,速度会很慢,如何选择流? 字节流时,选择BufferedInputStream和BufferedOutputStream。 字符流时,选择BufferedReader 和 BufferedWriter 5. IO模型有几种? 阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。

By Ne0inhk
科普文:Elasticsearch系列之【Elasticsearch实操:全文搜索与高亮显示】

科普文:Elasticsearch系列之【Elasticsearch实操:全文搜索与高亮显示】

概叙 关于Elasticsearch的体系结构、安装、基本操作可以参考上面文章。这里我们小结一下Elasticsearch的六大顶级核心应用场景。 今天我们详细看一下Elasticsearch的六大顶级核心应用场景之一:全文检索。 全文搜索特点 * 倒排索引(Inverted Index):Elasticsearch 使用倒排索引结构,使其能够快速进行全文搜索和查询。 * 复杂查询:支持布尔查询、短语查询、模糊查询等多种复杂查询。 * 实时性:数据几乎实时地被索引和可搜索。 全文搜索应用场景 * 网站搜索 * 文档管理系统 * 电子商务搜索 全文搜索与高亮显示 业务场景: 某电商平台需要为用户提供高效的商品搜索功能,要求在海量数据中快速返回匹配结果,并高亮显示关键字,提升用户体验。 解决方案: * 索引设计: 对商品名称、描述、品牌等字段进行全文索引,使用 Elasticsearch 的分词器(如 Standard Analyzer)处理数据,确保用户输入的关键字可以正确匹配商品信息。 * 搜索功能: 使用 match 查询类型,配合

By Ne0inhk