目录

  • 1. 布尔类型
  • 3. 浮点型
  • 4. 复数类型
    • 字符串遍历
    • 字符类型

Go语言内置的基础类型

1. 布尔类型

  • 关键字bool,可赋值为预定义的true和false,如:var v1 bool
  • 布尔类型不能接受其他类型的赋值,也不能强制类型转换。

    2. 整型

  • int8、byte、int16、int、uint、uintptr等。

类 型 长度(字节) 值 范 围
int8 1 -128 ~ 127
uint8 (byte) 1 0 ~ 255
int16 2 -32 768 ~ 32 767
uint16 2 0 ~ 65 535
int32 4 -2 147 483 648 ~ 2 147 483 647
uint32 4 0 ~ 4 294 967 295
int64 8 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
uint64 8 0 ~ 18 446 744 073 709 551 615
int 平台相关 平台相关
uint 平台相关 平台相关
uintptr 同指针 在32位平台下为4字节,64位平台下为8字节
  • int和int32在Go语言里被认为是两种不同的类型,编译器不会自动做类型转换,而是报错。
  • value1 := 64 //自动推导将数字认为int类型
  • 两个不同类型的整型数不能直接比较,比如int8类型的数和int类型的数不能直接比较,但
    各种类型的整型变量都可以直接与字面常量(literal)进行比较

    位运算

运 算 含 义 样 例
x << y 左移 124 << 2 // 结果为496
x >> y 右移 124 >> 2 // 结果为31
x ^ y 异或 124 ^ 2 // 结果为126
x & y 124 & 2 // 结果为0
x | y 124
^x 取反 ^2

3. 浮点型

  • float32
  • float64
  • 自动推导的类型是float64

    浮点比较

    因为浮点数不是一种精确的表达方式,所以像整型那样直接用==来判断两个浮点数是否相等
    是不可行的,这可能会导致不稳定的结果。

    下面是一种推荐的替代方案:

import "math"// p为用户自定义的比较精度,比如0.00001
func IsEqual(f1, f2, p float64) bool {return math.Fdim(f1, f2) < p
}

4. 复数类型

  • 复数表示的示例如下:
var value1 complex64 // 由2个float32构成的复数类型
value1 = 3.2 + 12i
value2 := 3.2 + 12i // value2是complex128类型
value3 := complex(3.2, 12) // value3结果同 value2
  • 对于一个复数z = complex(x, y),就可以通过Go语言内置函数real(z)获得该复数的实
    部,也就是x,通过imag(z)获得该复数的虚部,也就是y。
  • 更多关于复数的函数,请查阅math/cmplx标准库的文档。

    5. 字符串

  • 在Go语言中,字符串也是一种基本类型。相比之下, C/C++语言中并不存在原生的字符串
    类型,通常使用字符数组来表示,并以字符指针来传递。
var str string // 声明一个字符串变量
str = "Hello world" // 字符串赋值
ch := str[0] // 取字符串的第一个字符
fmt.Printf("The length of \"%s\" is %d \n", str, len(str))
fmt.Printf("The first character of \"%s\" is %c.\n", str, ch)
  • 字符串的内容可以用类似于数组下标的方式获取,但与数组不同,字符串的内容不能在初始
    化后被修改,编译器会报类似如下的错误:
    cannot assign to str[0]
  • Go语言仅支持UTF-8和Unicode编码。

    字符串操作

    x + y 字符串连接

    len(s) 字符串长度

    s[i] 取字符

    更多的字符串操作,请参考标准库strings包。

字符串遍历

Go语言支持两种方式遍历字符串。一种是以字节数组的方式遍历:
str := "Hello,世界"
n := len(str)
for i := 0; i < n; i++ {
ch := str[i] // 依据下标取字符串中的字符,类型为byte
fmt.Println(i, ch)
}
这个例子的输出结果为:
0 72
1 101
2 108
3 108
4 111
5 44
6 32
7 228
8 184
9 150
10 231
11 149
12 140
可以看出,这个字符串长度为13。尽管从直观上来说,这个字符串应该只有9个字符。这是
因为每个中文字符在UTF-8中占3个字节,而不是1个字节。
另一种是以Unicode字符遍历:
str := "Hello,世界"
for i, ch := range str {
fmt.Println(i, ch)//ch的类型为rune
}
输出结果为:
0 72
1 101
2 108
3 108
4 111
5 44
6 32
7 19990
10 30028
以Unicode字符方式遍历时,每个字符的类型是rune(早期的Go语言用int类型表示Unicode
字符),而不是byte。

字符类型

  • 在Go语言中支持两个字符类型,一个是byte(实际上是uint8的别名),代表UTF-8字符串
    的单个字节的值;另一个是rune,代表单个Unicode字符。
  • 关于rune相关的操作,可查阅Go标准库的unicode包。另外unicode/utf8包也提供了
    UTF8和Unicode之间的转换。

转载于:https://www.cnblogs.com/ravener/p/9858431.html

Go语言内置的基础类型相关推荐

  1. R语言内置颜色色板+生成代码

    R语言内置颜色参照色板 日常使用中, 想用一些R语言内置颜色, 网上始终没有找到相对齐全的内置色板, 于是自己写了一个. R语言内置颜色总共657种, 文中代码共生成560种颜色, 去掉了部分Grey ...

  2. JS(七)内置对象-简单类型与复杂类型

    1.内置对象 JavaScript 中的对象分为3种:自定义对象.内置对象.浏览器对象 前面两种对象是JS基础内容,属于ECMAScript : 第三种浏览器对象属于我们JS 独有的,属于JS API ...

  3. JSP内置对象基础知识小结

    JSP提供9大内置内象: 一.request内象: 封装了由客户端生成的HTTP请求的所有细节,主要包括了http头信息,系统信息,请求方式,请求参数等. 1.获取访问请求参数:request.get ...

  4. python序列类型-Python内置的序列类型

    内置序列类型概览 按照可否存储不同数据类型来分,可以分为容序列和扁平序列. 容器序列 list, tuple, collections.deque 这些序列类型可以容纳不同类型的数据. 扁平序列 st ...

  5. C++ 内置或者复合类型 成员,必须自己定义构造函数来初始化……什么样的是【内置】 【复合类型】

    如题,什么是内置,或者复合类型??如果是 一般的float,int,或者一个结构体的引用,是不是不初始化会出问题?? 新手求解. 内置类型(built-in):像int double char这种C+ ...

  6. day 07总结(数字类型内置方法/字符串类型内置方法)

    一.数字类型内置方法 整型和浮点型统称为数字类型. 1.整型内置方法(int) 作用:描述年龄.号码.等级等. 定义方式:可以使用int()方法将纯数字的字符串转为十进制的整型. 使用方法: age ...

  7. 高阶ts内置泛型帮助类型

    extends 可以用来继承一个class,interface,还可以用来判断有条件类型(很多时候在ts看到extends,并不是继承的意识) 示例: T extends U ? X : Y; 上面的 ...

  8. c语言内置画直线函数库,C语言不调用库函数画直线

    昨天写了一个代码,使用C语言画三角形,既然写了那个,那就继续画一条直线,这个也很有意思. C语言不调用库函数画一个三角形 直线的方程是 如下图所示 - - 斜率的范围 (-∞,+∞) 既然知道公式了, ...

  9. c语言内置函数大全,C语言——常用内置函数总结

    ctype.h 1.isalpha():测试一个字符是否为字母,是则返回1,否则返回0. 2.isdigit():测试一个字符是否为数字,是则返回1,否则返回0. 3.isupper():测试一个字符 ...

最新文章

  1. cordova编译报错:Execution failed for task ':processDebugResources'
  2. java webpack web项目_spring + spring mvc + mybatis + react + reflux + webpack Web工程例子
  3. AtCoder AGC037E Reversing and Concatenating
  4. CF-346 D. Robot Control(反向建图spfa)
  5. NOI2004郁闷的出纳员
  6. linux安装python2环境_Python基础手册 2 —— Python 环境搭建(Linux)
  7. android学习日记15--WebView(网络视图)
  8. 我一定要让所有人都知道awk这个实用操作
  9. anaconda升级sklearn版本
  10. sql导入mysql视频教程_Navicat怎样导入导出sql文件?(图文步骤+视频教程)
  11. 经纬度转化为xy坐标系_Arcgis添加经纬度矢量点
  12. 问卷设计一:问卷题目哪些有类型和注意要点?
  13. rabbit的安装配置过程
  14. 使用EndNote对Word论文的参考文献进行管理
  15. 【TensorFlowKeras】基于卷积神经网络CNN的猫狗分类
  16. 【踩坑】Win11 WSL2 中 meld 无法正常使用问题修复
  17. 艾特网能全面参与数据中心蒸发冷却空调系列标准编制
  18. 使用kettle采集excel表格中的数据
  19. 数学建模——排队论笔记
  20. 什么是Restfull

热门文章

  1. 在python中创建虚拟环境和Django对数据库的操作(一)
  2. 聚类算法应用场景实例十则
  3. 深度学习《CNN架构续篇 - 学习率衰减》
  4. python切片操作 当所有数据都省略时_python疑难问题---13、Python切片操作
  5. leetcode - 467. 环绕字符串中唯一的子字符串
  6. DPMM的理解、公式推导及抽样
  7. 罗德里格斯(Rodrigues)旋转方程推导
  8. JQuery ZTree简单使用
  9. 11988 - Broken Keyboard (a.k.a. Beiju Text)
  10. python 蒙特卡罗_蒙特卡洛模拟(Python)深入教程