- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
关注微信公众号【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人.
本文深入探讨了 Go 语言的内置类型系统,从布尔类型到复杂的字符串类型,旨在为开发者提供全面而详尽的指导,通过丰富的代码示例和应用场景,揭示了如何在实际项目中高效地运用这些类型.
在编程中,类型(type)可以被看作是值(value)的模板,而值则可以被看作是类型的实例。在这篇文章里,我们专注于介绍Go语言的内置(或称为预声明的)基本类型和它们字面量的表示形式。这里并不涉及组合类型.
在 Go 语言中,布尔类型用关键字 bool 表示,它有两个预定义的常量值: true 和 false .
var myBool bool = true
布尔变量可以在声明时初始化,也可以稍后进行赋值.
// 声明并初始化
var isReady bool = true
// 声明后赋值
var isEnabled bool
isEnabled = false
布尔类型主要用于逻辑运算:AND ( && ), OR ( || ), 和 NOT ( ! ).
// AND 操作
result := true && false // 输出:false
// OR 操作
result = true || false // 输出:true
// NOT 操作
result = !true // 输出:false
布尔类型经常用于 if , else if 和 else 结构中.
if isReady {
fmt.Println("System is ready.")
} else {
fmt.Println("System is not ready.")
}
布尔表达式也可用于控制循环结构如 for .
for isReady {
// 执行代码
}
布尔类型也经常用作函数的返回类型,以指示函数是否成功执行或验证.
func isAuthenticated() bool {
// 认证逻辑
return true
}
false
,需注意未初始化的布尔变量默认为 false
。 在 Go 语言中,整数类型主要分为两大类:带符号(Signed)和无符号(Unsigned)的整数,同时还有一个特殊的整数类型 rune 和 byte .
int8
, int16
, int32
, int64
, int
uint8
, uint16
, uint32
, uint64
, uint
rune
(等同于 int32
), byte
(等同于 uint8
)
// 声明并初始化带符号整数
var a int8 = -128
var b int32 = 2147483647
// 声明并初始化无符号整数
var c uint8 = 255
var d uint32 = 4294967295
常用的整数运算符包括:加( + )、减( - )、乘( * )、除( / )和模( % ).
// 整数运算
x := 10
y := 20
result := x + y // 结果为 30
整数还支持位运算:AND ( & ), OR ( | ), XOR ( ^ ), 以及位左移 ( << ) 和位右移 ( >> ).
// 位运算
var m uint8 = 1 << 3 // 结果为 8
需要注意的是,整数类型有范围限制,超过范围会导致数据溢出.
var maxInt8 int8 = 127
maxInt8 = maxInt8 + 1 // 溢出,结果为 -128
在不同类型之间转换时,需显示使用类型转换.
var integer16 int16 = 32767
var integer32 int32
integer32 = int32(integer16) // 类型转换
在使用 := 进行变量声明和初始化时,Go 语言会自动推断类型.
autoInt := 42 // 类型推断为 int
rune 类型常用于表示一个 Unicode 字符.
var character rune = 'A'
byte 类型通常用于处理 ASCII 字符或者二进制数据.
var b byte = 'a'
在 Go 语言中,浮点数类型主要有两种:
float32
: 32 位浮点数,精度约为 7 位小数。 float64
: 64 位浮点数,精度约为 15 位小数。
// 声明并初始化 float32 和 float64
var a float32 = 3.14
var b float64 = 3.141592653589793
常用的运算符包括:加( + )、减( - )、乘( * )、除( / ).
x := 1.1
y := 2.2
result := x + y // 结果为 3.3
由于计算机内部表示浮点数的限制,会有精度问题.
// 精度问题
var c float32 = 0.1
var d float32 = 0.2
var e float32 = 0.3
if c+d == e {
fmt.Println("Equal")
} else {
fmt.Println("Not Equal") // 输出 "Not Equal"
}
Go 语言的 math 包提供了丰富的数学函数.
import "math"
// 开方
result := math.Sqrt(16.0) // 结果为 4.0
// 类型转换
var f float32 = 1.1
var g float64
g = float64(f) // 类型转换
// 类型推断
autoFloat := 3.14 // Go 语言会自动推断为 float64 类型
// 无穷大
var inf float64 = math.Inf(1)
// NaN (Not a Number)
var nan float64 = math.NaN()
注意:转换时可能会有精度损失.
var h float64 = 3.9
var i int = int(h) // 结果为 3
在 Go 语言中,字符串类型被定义为一串不可变的字节序列,通常用于存储文本数据.
// 声明一个字符串类型的变量
var str string
// 声明并初始化一个字符串
var hello string = "Hello, world!"
或者使用短变量声明:
hello := "Hello, world!"
字符串拼接:
str1 := "Hello"
str2 := "World"
result := str1 + ", " + str2 // 结果:"Hello, World"
获取字符串长度:
length := len("Hello, World!") // 结果:13
在 Go 中,可以方便地在字符串和字节切片之间进行转换.
// 字符串转字节切片
byteSlice := []byte("Hello")
// 字节切片转字符串
str := string(byteSlice)
// 截取字符串中的部分字符
subStr := "Hello, World!"[7:12] // 结果:"World"
// 遍历字符串中的每一个字符
for i, r := range "Hello" {
fmt.Printf("%d: %c\n", i, r)
}
输出:
0: H
1: e
2: l
3: l
4: o
使用反引号( ` )可以声明一个多行字符串.
multiLineStr := `This is
a multi-line
string.`
Go 字符串支持多种转义字符,如 \n (换行)、 \t (制表符)等.
// 使用转义字符
escapedStr := "This is a line.\nThis is another line."
在前几章节中,我们详细地探究了 Go 语言的各种内置类型:从布尔型到整数、浮点数和字符串。这些基础类型构成了 Go 语言的基础结构,对于编写高性能和可维护代码非常重要.
Go 语言的类型系统相对简单,但并不意味着它不强大或灵活。恰恰相反,Go 语言提供了一套非常高效和易于理解的类型机制.
var isActive bool // 布尔类型
var price int32 // 整数类型
var pi float32 // 浮点数类型
var name string // 字符串类型
在 Go 中,字符串是不可变的,这有助于多线程编程。不可变性确保了在并发访问时,数据状态始终是可预测的.
// 字符串不可变性示例
str := "immutable"
// str[0] = 'I' // 编译错误
Go 提供了大量内建函数和标准库,以优化各种类型的操作.
import "math"
// 浮点数优化
result := math.Floor(3.75) // 输出:3.0
关注微信公众号【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 如有帮助,请多关注 个人微信公众号:【TechLeadCloud】分享AI与云服务研发的全维度知识,谈谈我作为TechLead对技术的独特洞察。 TeahLead KrisChang,10+年的互联网和人工智能从业经验,10年+技术和业务团队管理经验,同济软件工程本科,复旦工程管理硕士,阿里云认证云服务资深架构师,上亿营收AI产品业务负责人.
最后此篇关于Go语言内置类型全解析:从布尔到字符串的全维度探究的文章就讲到这里了,如果你想了解更多关于Go语言内置类型全解析:从布尔到字符串的全维度探究的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Apache服务器全局配置之服务器标识配置篇 服务器标识相关指令: ServerName ServerAdmin ServerSignature ServerTokens UseCanonical
//校验是否全由数字组成 ? 1
具体内容如下: 1 os.system 例如 ipython中运行如下命令,返回运行状态status os.system('cat /etc/passwdqc.conf') min=disab
基本操作 查看数据库 ? 1
Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此,如果你要成为
就如今天遇到随即函数rand();脑海中想到用它做点啥好呢,最后想起了验证码,数字验证码,字母验证码,中文验证码,可是自己不会呀,咋办呢,上网搜,看别人的代码,开不懂,看视频,听老师讲,将其中所遇到
pcre-7.8.tar.gz 正则表达式下载地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
IDEA常用设置(提高开发效率) 本人也是IDEA编译器的忠实用户了,但是有时出于各种原因,比如更换设备等等,IDEA总是需要重新安装配置。这就让我比较苦恼,因为总是记不全自己之前都修改了
? 1 2
1、 操作环境搭建 系统:Windows7 旗舰版 64位 PHP环境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 去年关闭。 Improve th
我已经为我在 Adobe Fireworks Cs5 中构建的页面生成了 css,我想知道如何为我的标题和其他 div 设置完整宽度。我将显示标题部分的 css 代码。 @charset "utf
您好,我希望表单宽度为 100%。我希望文本框几乎延伸整个页面的宽度,并在文本框的右侧直接放置小的“GO”按钮,所有按钮都在同一行(或 block )上。 现在我的文本框只有其中文本的宽度(“在此处输
我没有设法将全宽页脚粘贴到网页底部。当页脚上方的主要内容低于一定高度时,页脚下方有一个空白区域。我尝试使用各种解决方案,例如以下 css 代码: html,body { margin:0; padd
我想要一个全宽的表格。当我给 position:fixed; 它变成全宽但可滚动不起作用。 简而言之,我需要一个与浏览器主体没有任何边距的表格。 body { font-family: "Helv
我注意到很多大型网站(如 Google 和 Facebook)在查看页面源代码时 99% 的源代码都是 JavaScript。 有人知道这种方法相对于常规 HTML+JavaScript 页面的优势吗
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this q
由于某种原因,我网站上的图片不再是全宽的。 据我所见,所有内容都设置为 100% 宽度。 http://cargocollective.com/btatest 我是不是什么地方都没有? 最佳答案 我认
我正在创建一个菜单并尝试使用 CSS 制作全宽菜单。但是,我不确定菜单项将如何出现在菜单中。 这是问题的截图: 问题出在我得到的“GAP”中。 如果我有固定数量的元素,我知道我可以使用这个逻辑: ul
这个问题在这里已经有了答案: Puzzle: Find largest rectangle (maximal rectangle problem) (6 个答案) 关闭 9 年前。 给定一个二元矩阵
我是一名优秀的程序员,十分优秀!