[go语言]数据类型

目录

知识结构

整型、浮点型

1.整型

2.浮点型

复数、布尔类型

1.复数

2.布尔类型

字符与字符串

1.字符串的格式化

2.字符串的截取

3.格式化好的字符串赋值给量

4.字符串的转换

5.strings包


知识结构

整型、浮点型

1.整型

在Go语言中,整型数据是一种基本的数据类型,用于表示整数。Go语言提供了多种整型数据类型,包括有符号和无符号的整型,以及不同大小的整型。

以下是Go语言中常用的整型数据类型:

int:有符号整数类型,根据平台和编译器,其大小可能有所不同。在大多数现代系统上,int的大小为32位或64位。

int8:有符号8位整数类型

int16:有符号16位整数类型

int32:有符号32位整数类型

int64:有符号64位整数类型

uint:无符号整数类型,大小与int相同,但只能表示非负整数。

uint8:无符号8位整数类型

uint16:无符号16位整数类型

uint32:无符号32位整数类型

uint64:无符号64位整数类型

在进行整形数据的处理时,需要选择合适的整型类型进行数据处理;

关于不同进制数的表示如下:

2.浮点型

在Go语言中,浮点型数据用于表示带有小数点的数值。Go语言提供了两种类型的浮点数:float32float64

  1. float32:32位单精度浮点数,其范围约为±1.18E-38到±3.4E+38,精度约为7位小数。
  2. float64:64位双精度浮点数,也称为double,其范围约为±2.23E-308到±1.80E+308,精度约为15位小数。

浮点型数据最主要的特点就是:不精确:

package main
import "fmt"

// 只有同类型才能参与运算;位数不同也不能匹配
func main() {
	//浮点类型 --- 不精确的,二进制存储小数位
	//小数点不能精确表示
	var f1 float32
	var f2 float32
	var f3 float32
	f1 = 0.111111
	f2 = 0.222222
	f3 = 0.333333
	if f1+f2 == f3 {
		fmt.Println("ok")
	} else {
		fmt.Println("error")
	}
}

该代码运行的结果就是“error”,因为浮点型数据在计算机中的表示采用的是IEEE 754标准,该标准规定了32位单精度浮点数和64位双精度浮点数的表示方法。理论上,32位浮点数最多能表示的数是2^32个,而小数却有无数个,因此,无法精确表示所有的小数。

复数、布尔类型

这两个数据类型就简单了解即可,下面是相关演示

1.复数

package main

import "fmt"

func main(){
    c := 5+2i
    fmt.Println(c)
    fmt.Printf("c type is %T\n",c)
}

这种带了“i”的就是复数,所以展现的类型是complex128,也就是复数形式。

2.布尔类型

bool类型默认取值为false:

字符与字符串

1.字符串的格式化

%d 十进制整数输出
%x 十六进制整数输出
%T 输出数据类型
%c 转换成字符输出
%f 浮点类型数输出
%.2f 保留两位小数输出
%% 输出百分号本身
%s 输出字符串

2.字符串的截取

pacakge main
import "fmt"

func main() {
	str4 := "abcdefg"
	fmt.Println(str4[4])           //取到下标为4的字符,即e,输出e的ASCII码值,也就是101
	fmt.Println(string(str4[0:5])) //左闭右开区间,取到qbcde
	fmt.Println(string(str4[5:]))  //fg
}

3.格式化好的字符串赋值给量

fmt.Sprintf 是 Go 语言中的一个函数,它用于将格式化的数据转换成字符串。这个函数是 fmt 包的一部分,通常用于构建字符串。

4.字符串的转换

int-->float:直接用float32()就可以:

	num1 := 100
	f1 := float64(num1)

但是字符串的转换就要用到一个包:strconv

Atoi将字符串转换为整型数,要保证这个字符串是可以转换的,比如“100”“50”这样的字符串。

Itoa将整型转换为字符串。

func main() {
	//int --> string
	num := 100
	str1 := strconv.Itoa(num)
	fmt.Printf("%s type is %T\n", str1, str1)
	//string --> int
	str2 := "100"
	num2, _ := strconv.Atoi(str2)
	fmt.Printf("num2 type is %T\n", num2)
}

5.strings包

string包
contains:判断一个字符串s是否包含substr
fmt.Println(strings.Contains("abc", "a"))
count:计算substr在s中出现多少次
fmt.Println(strings.Count("aabbccdd", "ab"))
HasPrefix(s,prefix) 判断字符串s是否以prefix开头
HasSuffix(s,suffix) 判断字符串s是否以suffix结尾
Index(s,substr) 判断substr在s字符串中第一次出现的下标位置,如果没有找到就返回-1
Replace(s,old,new,n) 将s字符串中原来的old替换为新的new,替换n次,n为-1表示全部替换
Tolower(s) 将一个字符串全部转化为小写
ToUpper(s) 将一个字符串全部转化为大写
Split("ab:xy:mn",":")  :按照冒号将字符串进行切割   //[ab xy mn]

使用strings包的内容可以快速对字符串做出处理。

相关推荐

  1. go语言数据类型转换

    2024-01-19 02:04:03       12 阅读
  2. Go语言数值类型教程

    2024-01-19 02:04:03       10 阅读
  3. GO语言基础笔记(一):基本语法数据类型

    2024-01-19 02:04:03       37 阅读
  4. go语言基本类型

    2024-01-19 02:04:03       33 阅读
  5. go 语言程序设计第4章--复合数据类型

    2024-01-19 02:04:03       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-19 02:04:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-19 02:04:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-19 02:04:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-19 02:04:03       18 阅读

热门阅读

  1. spring retry 配置及使用

    2024-01-19 02:04:03       35 阅读
  2. 设计模式——命令模式

    2024-01-19 02:04:03       38 阅读
  3. nodejs学习计划--(二)fs文件系统和path模块

    2024-01-19 02:04:03       36 阅读
  4. 【话题】边缘计算的挑战和机遇

    2024-01-19 02:04:03       32 阅读
  5. <sa8650>sa8650 qcxserver-之-DiagnosticManager HealthStatus

    2024-01-19 02:04:03       31 阅读
  6. Django迁移数据到指定数据库

    2024-01-19 02:04:03       31 阅读
  7. 改善python程序的91建议记录(学习记录)

    2024-01-19 02:04:03       34 阅读
  8. CNCF之K8s外传

    2024-01-19 02:04:03       37 阅读