Q_Go2
一、变量
1.1 变量的概念
变量是计算机语言中存储数据的抽象概念。变量的功能是存储数据。变量通过变量名访问。
变量的本质是计算机分配的一小块内存,专门用于存放指定数据,在程序运行过程中该数值可以发生改变。
变量的存储往往具有瞬时性,或者说是临时存储,当程序运行结束,存放该数据的内存就会释放,而该变量就会消失。
Go语言的变量名是由数字,字母,下划线组成,首个字符不能为数字。
1.2 声明变量
未初始化的标准格式
var 变量名 变量类型
未初始化的批量格式
不用每行都用var 申明
var (
a int
b string
c[]float32
d func() bool
e struct{
x int
y string
}
)
未初始化变量的默认值
整行和浮点型变量默认值: 0
字符串默认值为空字符串
布尔型默认值为false
函数,指针变量初始值为nil
初始化变量的标准格式
var 变量名 类型 = 表达式
初始化变量的编译器自动推断类型格式
var 变量名 = 表达式
初始化变量的简短声明格式(短变量声明格式)
变量名:= 表达式
使用 := 赋值操作符,:=可以高效地创建一个新的变量,称之为初始化声明。
声明语句省略了var关键字
变量类型将由编译器自动推断
这是声明变量的首选形式,但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值
该变量名必须是没有定义过的变量名,若定义过,将发生编译错误
在多个短变量声明和赋值中,至少有一个新声明的变量出现在左侧中,那么即便有其他变量名可能是重复声明的,编译器也不会报错
变量多重赋值(多个变量同时赋值)
Go语法中,变量初始化和变量赋值是两个不同的概念,Go语言的变量赋值与其他语言一样,但是Go提供了其他程序员期待已久的多重赋值功能,可以实现变量交换。多重赋值让Go语言比其他语言减少了代码量
匿名变量
Go语言的函数可以返回多个值,而事实上我们并不是对所有的返回值都用得上,那么就可以使用匿名变量,使用"_"下划线替换即可
匿名变量不占用命名空间,不会分配内存
二、数据类型
基本数据类型(原生数据类型):整型,浮点型,布尔型,字符串,字符(byte rune)
复合数据类型(派生数据类型):指针(pointer),数组(array),切片(slice),映射(map),函数(function),结构体(struct),通道(channel)
2.1 整型
整型分为两大类:
按长度分:init8 init6 init32 init64 int
无符号整型:unit8 unit16 unit32 unit64 unit
其中unit8就是byte型,init16对应C语言的short型,init64对应C语言的long型
2.2 浮点型
Go语言支持4中浮点型数:float32 float64 complex64
float32的最大范围是3.4e38用常量定义是:math.MaxFloat32
float64的最大范围是1.8e308用常量定义是:math.MaxFloat64
2.3 布尔型
声明方式 var flag bool
布尔型无法参与数值运算,也无法与其他类型进行转换
2.4 字符串
字符串在Go语言中是以基本数据类型出现的,使用字符串就像使用其他原生基本数据类型int float32, float64 bool一样
字符串可以使用转移符
\r 回车符return 返回行首
\n 换行符 new line 直接调到下一行的同列位置
\t 制表符 TAB
\ '单引号
\ " 双引号
\ 反斜杠
定义多行字符串
双引号书写字符串被成为字符串字面量(string literal)这种字面量不能跨行
多行字符串需要使用 " ` "反引号,多用于内嵌源码和内嵌数据
在反引号中的所有代码不会被翻译器识别,而只是作为字符串的一部分
2.5 字符
字符串中的每一个元素叫做 "字符",定义字符时使用单引号,Go语言的字符有两种:
byte型:其实是 unit8的别名,代表了一个ASCII码的一个字符
rune型:其实就是init32。代表了一个UTF-8字符,当需要处理中文等unicode字符集时需要用到rune类型
var a byte = 'a'
var b rune = '—'
三、打印格式化
3.1 通用
%v 值的默认格式表示
%+v 类似%v,但输出结构体时会添加字段名
%#v 值的Go语法表示
%T 值的类型的Go语法表示
3.2 布尔值
%t 单词 true 或 false
3.3 整数
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%8d 表示该整型长度是8,不足8则在数值前补空格。如果超出8,则以实际为准。
%08d 数字长度是8,不足8位的,在数字前面补0。如果超出8,则以实际为准
%o 表示为八进制
%q 该数值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x 表示为十六进制,使用a-f
%X 表示为十六进制,使用A-F
%U 表示为Unicode格式,U+1234等价于"U+%04x" unicode
3.4 浮点数与复数的两个组分
%b 无小数部分,二进制指数的科学计数法,如-123456p-78;参见strconv.FornatFloat
%e (=%.6e)有6位小数部分的科学计数,如-1234.456e+78
%E 科学计数法,如-123.456+78
%f (=%.6f)有6位小数部分,如:123.456.12 float
%F 等价于%f
%g 根据实际情况采用%e或%f格式(以获得更简洁,准确的输出)
%G 根据实际情况采用%E或%F格式(以获得更简洁,准确的输出)
四、常量
4.1 声明方式
相对于变量,常量是恒定不变的值,例如圆周率
常量是一个简单值的标识符,在程序运行时,不会被改变
常量中的数据类型只可以是布尔型,数字型(整数型,浮点型和复数)和字符串型
常量的定义格式:
const 标识符[类型] = 值
可以省略类型说明符[type],因为编译器可以根据变量的值来自动推断其类型
显式类型定义: const B string = 'Steven'
隐式类型定义:const C = 'Steven'
多个相同类型的声明可以简写为:
const WINTH,HEIGHT = value1,value2
常量定义后未被使用,不会在编译时出错
4.2 常量用于枚举(常量组)
例如以下格式:
const(
Unknown = 0
Female = 1
Male = 2
)
数字0,1和 2 分别代表未知性别,男性和女性
常量组中如果不执行类型和初始值,则与上一行非空常量的值相同。
const(
a = 10
b
c
)
打印a ,b,c 输出:10 10 10
4.3 iota
iota,特殊常量值,是一个系统定义的可以被编译器修改的常量值,iota只能出现在常量组中
在每一个const关键字出现时,被重置为0,然后每出现一个常量,iota所代表的数值会自动增加1,iota可以理解成常量组中的常量的计数器,不论该常量的值是什么,只要有一个常量,那么iota就加1
iota可以被用作枚举值:
const(
a = iota
b = iota
c = iota
)
println(a,b,c)
打印输出:0 1 2
Q_Go2的更多相关文章
随机推荐
- windows 2008R2 搭建web实现https访问
一.安装服务. 二.IIS创建证书申请. 三.ca颁发证书 三.创建网站. 创建一个新建文件夹,并在文件夹中创建一个txt文件. 把新建文本文档.txt重命名为index.html 完成证书申请(导入 ...
- Linux 正则表达式与文本处理器 三剑客
Linux 正则表达式与文本处理器 三剑客 一.正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在linu ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring实例化Bean的三种方法
在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象.在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化.静态工厂方式实例化和实例工厂方式实例化. 构造器实例化 ...
- 生成私钥、公钥,配置到Git上
ssh-keygen -t rsa -C "1032671220@qq.com" 输入完毕指令,输入密码.然后会在 /z/.ssh/文件夹下生成一个私钥rsa_id.公钥rsa_p ...
- 寒假day24
数据挖掘得继续深入,人物画像需要进行更多层次的分析
- 2020/2/6 PHP编程学习
今天把后台数据库处理好了,用了框架后真就是搬砖的一天..晚上继续刷题,明天把数据库处理完,这样一个商城框架就有了:
- UVALive 4329 树状数组第二题
大白书上的题目,比较巧妙的是其分析,为了求某个i点做裁判的时候的情况数,只要知道左边有多少比它小的记为ansc,右边有多少比它小的记为ansd,则总种数,必定为 ansc*(右边总数-ansd)+an ...
- SQLServer多条件查询技巧
2019-10-15 13:31:04 在实际项目开发中,有很多页面都会出现多条件查询功能,类似于这种情况: 牵扯到数据就少不了数据库了.这么多条件的查询,如果要用常规的if else来写判断逻辑的 ...
- js对象属性名和属性值生成新数组时都作为属性值
const obj = { id:1, name:'zhangsan', age:18 } const arr = []; Object.getOwnPropertyNames(obj).forEac ...
- B - Common Divisors (codeforces)数论算法基本定理,唯一分解定理模板
You are given an array aa consisting of nn integers. Your task is to say the number of such positive ...