一、整形

Go语言里支持有符号和无符号两种整型。这里的符号就是正负号。

1、分类:

有符号的整型:int , int8 , int16 , int32 , int64

无符号的整型:uint,uint8,uint16,uint32,uint64 其它:uintptr(指针小节单独介绍)

2、说明:

①8,16,32,64表示的是二进制数,即整型大小,1个字节(字节叫byte)= 8bits(1bit就是一位二进制)

②int/uint比较特殊,它会根据不同的系统进行匹配,比如64位系统他就会存成64位的整型,32位系统它就会存成32位的整型,但是需要强调的是:int类型和int64或者int32不是同类型,不能直接进行运算。

3、范围:

二、浮点型

1、分类:

float32 ,float64

2、说明:

float32,可以显示8位,精确到7位(含整数位),如下:

  1. var a float32 = 123456.785
  2. fmt.Println(a) # 结果:123456.78

  3. var a float32 = 1.23456785
  4. fmt.Println(a) # 结果:1.2345679

float64,可以显示17位,精确到16位(含整数位)

三、复数类型

我们把形如a+bi(a叫做复数的实部,b叫做复数的虚部,a、b的类型皆为浮点型,i是虚数单位)的数称为复数。

1、分类:

complex64(complex64里,a,b皆是float32) complex128(complex64里,a,b皆是float64)

2、定义:

  1. var v1 complex64 # 初始值为(0+0i)
  2. v2 := 3.2 + 12i # 不指定类型的,默认是complex128
  3. v3 := complex(3.2,12) # complex128

四、bool类型

bool类型很简单,就两个值,true、false。支持逻辑运算:

  1. true || false # true
  2. true && true # true
  3. !true # false

五、字符串类型

1、分类:

string类型有两种表示方法,一种就用双引号引起来(”“),一种是用反引号引起来(``)

2、说明:

虽然 “”,``都可以表示字符串,但两者之间也有区别 先说“”,这样的字符串叫做解释型字符串,字符串里可以使用转义符号“\”,常用转义字符如下:

  1. \n 换行
  2. \r 回到行首
  3. \" 双引号
  4. \\ 反斜杠

再说``,这样的字符串叫做非解释型字符串,非解释型字符串不支持转义符号,会原样输出引号内的内容,包括换行、空格等等。

3、字符串的操作

①字符串逻辑比较

  1. 支持 !=, == > <

②字符串拼接

  1. 用“+”,“+=”进行字符串拼接

③字符串输出格式化

通过使用fmt.Printf("")来实现字符串输出时的格式化,实现如下:

  1. var a int = 520
  2. fmt.Printf("xxx,%d",a) # 结果:"xxx,520"

其中%d用来占位,a用来传值给%d 其它常用指令符如下:

④获取字符串字节长度

  1. 使用len(字符串)获取:
  2. fmt.Println(len("wo我")) # 中文占3个字节,所以结果是5

按索引访问字符串字节

字符串“wo我”,长度为5,即5个字节,“w“”o“分别占一个字节,”我“占3个字节。字符串会按照字节,从前到后依次用索引标记,第一个字节为0,第二个字节为1,以此类推。

我们可以通过索引访问到指定字节。如下:(得到的是utf-8的十进制表示)

  1. var a = "wo我"

  2. fmt.Println(a[0]) # 结果是119,119是“w”的utf-8编码的十进制表示
  3. fmt.Println(a[2]) # 结果是230,“我”占3个字节,230是我的第一个字节

字符串切片操作

形如:字符串[起始字节索引:结束字节索引]。省略起始索引,默认就从0开始,省略结束索引,默认就以最后一个索引结束。这样我们可以得到一个新的字符串。

强调:1、索引是按字节标记的;2、[起始索引:终止索引]是顾头不顾尾,或者说左闭右开。

  1. var a = "我很帅"
  2. var b = a[0:3]
  3. fmt.Println(b) # 结果:"我",[0:2]刚好切出了表示"我"的三个字节
  4. var c = a[3:]
  5. fmt.Println(c) # 结果:"很帅",结束索引被省略,默认切到最后
  6. var d = a[:3]
  7. fmt.Println(d) # 结果:"我",起始索引被省略,默认从头开始切
  8. var e = a[:]
  9. fmt.Println(e) # 结果:"我很帅",都省略,默认从头切到最后

字符串的遍历

我们使用for i,v := range 字符串 {} 来遍历字符串

  1. for i,v := range "我是haha" {
  2. fmt.Println(i,v)
  3. }

  4. 结果:0 25105 # 从0开始计数,25105是unicode中“我”的序号(十进制)
  5. 3 26159 # 因为“我”占3个字节,所以,“是”的索引就是从3开始
  6. 6 104 # “h”占一个字节
  7. 7 97
  8. 8 104
  9. 9 97

当然,学了printf格式化输出之后,unicode码点我们就可以用%c处理:

  1. for i,v := range "我是haha"{
  2. fmt.Printf("%d,%c\n",i,v)
  3. }

  4. 结果:0,我
  5. 3,是
  6. 6,h
  7. 7,a
  8. 8,h
  9. 9,a

补充:强制类型转化

强制类型转化只适用于数字类型之间

注意点:转化后的类型要足矣表示转化前的类型,不然结果会很奇怪

strings包

Go语言为了简化字符串的复杂操作,在标准库中提供了一个名为strings的包,里面集成了很多功能,我们直接调用就好,不需要再自己编写。

下面我们来学习strings包中的几个常用的功能:

①、是否以...开头:strings.HasPrefix(str, "...")

  1. var str1 = "我很帅"
  2. fmt.Println(strings.HasPrefix(str1, "我")) # true

②、是否以...结尾:strings.HasSuffix(str, "...")

  1. var str1 = "我很帅"
  2. fmt.Println(strings.HasSuffix(str1, "很帅")) # true

③、是否包含...:strings.Contains(str, "...")

  1. var str1 = "我真的很帅"
  2. fmt.Println(strings.Contains(str1, "真的")) # true

特别的:

  1. var str1 = "我真的很帅"
  2. fmt.Println(strings.Contains(str1, "")) # true

④、是否包含....中任意字符:strings.ContainsAny(str, "...")

  1. var str1 = "我真的很帅"
  2. fmt.Println(strings.ContainsAny(str1, "真帅")) # true

特别的:

  1. var str1 = "我真的很帅"
  2. fmt.Println(strings.ContainsAny(str1, "")) # false

⑤、查找....第一次出现的索引:strings.Index(str, "...")

若存在就返回指定字符串第一个字符的索引,若不存在,就返回-1

  1. var str1 = "我真的真的很帅"
  2. fmt.Println(strings.Index(str1, "真的")) #

  3. var str1 = "我真的真的很帅"
  4. fmt.Println(strings.Index(str1, "很丑")) # -1

⑥、查找....最后一次出现的索引:strings.LastIndex(str, "...")

若存在就返回指定字符串第一个字符的索引,若不存在,就返回-1,使用如下:

  1. var str1 = "我真的真的很帅"
  2. fmt.Println(strings.LastIndex(str1, "真的")) #

⑦、字符串替换:strings.Replace(str, oldstr, newstr, n)

oldstr表示需要被替换的字符串,newstr表示替换内容,n表示匹配个数,n为-1表示匹配所有

  1. var str1 = "我真的真的真的很帅"
  2. fmt.Println(strings.Replace(str1, "真的", "非常", 2)) # 我非常非常真的很帅

  3. var str1 = "我真的真的真的很帅"
  4. fmt.Println(strings.Replace(str1, "真的", "非常", -1)) # 我非常非常非常很帅

⑧、频率统计:strings.Count(str, target)

target表示需要统计的字符串,返回总个数

  1. var str1 = "我真的真的真的很帅"
  2. fmt.Println(strings.Count(str1,"真的")) #

小技巧(统计字符数量)

  1. var str1 = "我真的真的真的很帅"
  2. var lenStr1 = strings.Count(str1,"") #

⑨、大小写转换

strings.ToLower(str),全部转成小写

strings.ToUpper(str),全部转成大写

  1. var str = "老王是dSB"
  2. fmt.Println(strings.ToLower(str)) # 老王是dsb
  3. fmt.Println(strings.ToUpper(str)) # 老王是DSB

⑩、修剪

strings.Trim(str,target)

strings.TrimLeft(str,target)

strings.TrimRight(str,target)

target是被修剪的字符串,trim用来修剪首尾,TrimLeft用来修剪首部,TrimRight用来修剪尾部。

strings.TrimSpace(str),用来修剪首尾的空格换行

  1. var str = "!!!golang!!!"
  2. fmt.Println(strings.Trim(str,"!")) # golang
  3. fmt.Println(strings.TrimLef(str,"!")) # golang!!!
  4. fmt.Println(strings.TrimRight(str,"!")) # !!!golang

  5. var str = "\n\tgolang\n\t"
  6. fmt.Println(strings.TrimSpace(str)) # golang

⑪、分割:strings.Split(str, target)

target是用来分割字符串的字符串,结果是以target为分隔点得到的一个slice切片

  1. var str = "a,b,c,d"
  2. fmt.Println(strings.Split(str, ",")) # [a b c d]

  3. var str = "我很帅"
  4. fmt.Println(strings.Split(str, "")) # [我 很 帅]

⑫、插入:strings.Join(strslice, target)

strslice是一个切片类型的数据,如⑪中分割所得到的,target为需要插入的字符串,得到的结果是每一个slice切片中的元素拼上插入字符串得到的新字符串

  1. var str = "a,b,c,d"
  2. var strslice = strings.Split(str, ",") # [a b c d]
  3. fmt.Println(strings.Join(strslice, ",")) # a,b,c,d

strconv包

go之基本数据类型的更多相关文章

  1. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  2. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

  3. Python高手之路【二】python基本数据类型

    一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

  4. UniqueIdentifier 数据类型 和 GUID 生成函数

    UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte. SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格 ...

  5. SQL Server常见数据类型介绍

    数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 1.整数类型 int 存储范围是-2,147,483,648到2,147,483 ...

  6. 由js apply与call方法想到的js数据类型(原始类型和引用类型)

    原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...

  7. python 数据类型 ----字典

    字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...

  8. SQL数据类型

    1.Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多8,000个字符. n varchar(n) 可变长度的字符串.最多8,000个字符.   varchar ...

  9. 跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

    运算符 设定:a=10,b=20 . 算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**3 ...

  10. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

随机推荐

  1. java——包装类中的equals方法

    基本数据类型包装类中的equals方法用于比对相同包装类中的值是否相等,如果两者比较的包装类类型不同则返回false: Byte public boolean equals(Object obj) { ...

  2. centos7安装nginx服务

    Nginx发音引擎x是一个免费的开源高性能HTTP和反向代理服务器,负责处理互联网上一些最大的网站的负载. 本教程将教你如何在你的CentOS Linux 7.5机器上安装和管理Nginx. 安装Ng ...

  3. Laravel 查询数据按照时间分组

    首先取消严格模式: // config/database.php // 'strict' => true, // 严谨模式注释掉 查询构造器代码: //查询构造器部分代码 })->with ...

  4. git、github常用操作

    1.将github项目拷贝到本地 $ git clone https://github.com/jim2500/miaosha_project.git 2.修改本地项目上传到github T470s@ ...

  5. 关于登陆界面,页面没有刷新完毕,点击登陆跳转到一个接口的bug

    现象 输入完密码点击登陆就跳转到了如下的页面 分析原因: 第一:查看html页面   页面中的html  登陆用的是form表单  表单中还写了属性  action   即允许跳到某一个接口,这里是没 ...

  6. JavaScript中with不推荐使用,为什么总是出现在面试题中?

    with的基本使用 尴尬的with关键字 一.with的基本使用 with是用来扩展语句作用域的,什么意思呢?先来看看语法和示例: 语法: with(expression){ statement } ...

  7. 初识 vue------简单介绍

    /**     vue         作者:尤雨溪         类型:MVVM      准确的来说是MV框架     为什么要学习vue         1.传统的项目是通过操作dom元素来修 ...

  8. 把json1赋值给json2,修改json2的属性,json1的属性也一起变化

    let json1 = { a: 1}let json2 = json1json2.a = 5 console.log(json1.a) // 5 console.log(json2.a) // 5 ...

  9. Python中GUI库PyQt5的安装和配置

    在使用Tkinter开发GUI程序时,发现相关文档比较少,开发起来太累.经过综合比较,决定使用PyQt这个库.下面是简单的安装步骤. 1.安装 PyQt5 : pip install PyQt5 -i ...

  10. 关于MySQL服务无法正常启动问题

    使用mysql的时候,突然查看服务列表也找不到mysql服务 解决办法: 一.首先打开CMD,切换到MySql安装目录的MySql Server →bin目录下 运行如下命令(具体试个人安装的MySq ...