解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍
数据类型
数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。
基本数据类型
Go 有三种基本数据类型:
bool:表示布尔值,要么是true,要么是false。- 数值型:表示整数类型、浮点数值和复数类型。
string:表示字符串值。
示例
以下示例展示了Go中的一些不同数据类型:
package main
import ("fmt")
func main() {
var a bool = true // 布尔值
var b int = 5 // 整数
var c float32 = 3.14 // 浮点数
var d string = "Hi!" // 字符串
fmt.Println("布尔值: ", a)
fmt.Println("整数: ", b)
fmt.Println("浮点数: ", c)
fmt.Println("字符串: ", d)
}
布尔数据类型
布尔数据类型使用bool关键字声明,只能取值true或false。
布尔数据类型的默认值是false。
示例
以下示例展示了声明布尔变量的不同方式:
package main
import ("fmt")
func main() {
var b1 bool = true // 有类型声明和初始值
var b2 = true // 无类型声明但有初始值
var b3 bool // 有类型声明但无初始值
b4 := true // 无类型声明但有初始值
fmt.Println(b1) // 输出 true
fmt.Println(b2) // 输出 true
fmt.Println(b3) // 输出 false
fmt.Println(b4) // 输出 true
}
Go整数数据类型
整数数据类型用于存储没有小数点的整数,例如35、-50或1345000。
整数数据类型有两个类别:
- 有符号整数 - 可以存储正数和负数
- 无符号整数 - 只能存储非负数
提示:整数的默认类型是int。如果不指定类型,类型将为int。
有符号整数
使用int关键字声明的有符号整数可以存储正数和负数:
package main
import ("fmt")
func main() {
var x int = 500
var y int = -4500
fmt.Printf("类型: %T, 值: %v\n", x, x)
fmt.Printf("类型: %T, 值: %v\n", y, y)
}
Go有五个有符号整数的关键字/类型:
| 类型 | 大小 | 范围 |
|---|---|---|
int |
取决于平台: | 在32位系统中为 -2147483648 到 2147483647, |
| 32位系统为32位, | 在64位系统中为 -9223372036854775808 到 9223372036854775807 | |
| 64位系统为64位 | ||
int8 |
8位/1字节 | -128 到 127 |
int16 |
16位/2字节 | -32768 到 32767 |
int32 |
32位/4字节 | -2147483648 到 2147483647 |
int64 |
64位/8字节 | -9223372036854775808 到 9223372036854775807 |
无符号整数
使用uint关键字声明的无符号整数只能存储非负数:
package main
import ("fmt")
func main() {
var x uint = 500
var y uint = 4500
fmt.Printf("类型: %T, 值: %v\n", x, x)
fmt.Printf("类型: %T, 值: %v\n", y, y)
}
Go有五个无符号整数的关键字/类型:
| 类型 | 大小 | 范围 |
|---|---|---|
uint |
取决于平台: | 在32位系统中为 0 到 4294967295, |
| 32位系统为32位, | 在64位系统中为 0 到 18446744073709551615 | |
| 64位系统为64位 | ||
uint8 |
8位/1字节 | 0 到 255 |
uint16 |
16位/2字节 | 0 到 65535 |
uint32 |
32位/4字节 | 0 到 4294967295 |
uint64 |
64位/8字节 | 0 到 18446744073709551615 |
选择整数类型取决于变量需要存储的值。
以下示例会导致错误,因为1000超出了int8的范围(范围是从-128到127):
package main
import ("fmt")
func main() {
var x int8 = 1000
fmt.Printf("类型: %T, 值: %v\n", x, x)
}
结果:
./prog.go:5:7: constant 1000 overflows int8
Go浮点数数据类型
浮点数数据类型用于存储带有小数点的正数和负数,例如35.3、-2.34或3597.34987。
浮点数数据类型有两个关键字:
float3232位 -3.4e+38 到 3.4e+38。float6464位 -1.
7e+308 到 +1.7e+308。
提示:浮点数的默认类型是float64。如果不指定类型,类型将为float64。
float32关键字
以下示例展示了如何声明一些float32类型的变量:
package main
import (
"fmt"
)
func main() {
var x float32 = 123.78
var y float32 = 3.4e+38
fmt.Printf("类型:%T,值:%v\n", x, x)
fmt.Printf("类型:%T,值:%v\n", y, y)
}
float64关键字
与float32相比,float64数据类型可以存储更大范围的数字。
以下示例展示了如何声明一个float64类型的变量:
package main
import (
"fmt"
)
func main() {
var x float64 = 1.7e+308
fmt.Printf("类型:%T,值:%v\n", x, x)
}
选择使用哪种浮点类型取决于变量需要存储的值。
以下示例会导致错误,因为3.4e+39超出了float32的范围:
package main
import (
"fmt"
)
func main() {
var x float32 = 3.4e+39
fmt.Println(x)
}
结果:
./prog.go:5:7: constant 3.4e+39 overflows float32
字符串数据类型
字符串数据类型用于存储字符序列(文本)。字符串值必须用双引号括起来:
package main
import (
"fmt"
)
func main() {
var txt1 string = "Hello!"
var txt2 string
txt3 := "World 1"
fmt.Printf("类型:%T,值:%v\n", txt1, txt1)
fmt.Printf("类型:%T,值:%v\n", txt2, txt2)
fmt.Printf("类型:%T,值:%v\n", txt3, txt3)
}
结果:
类型:string, 值:Hello!
类型:string, 值:
类型:string, 值:World 1
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍的更多相关文章
- Java 集合系列 05 Vector详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 06 Stack详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array
[源码下载] 速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array 作者:webabcd 介绍速战速决 之 PHP 数据类型 boo ...
- Python函数声明以及与其他编程语言数据类型的比较
1.函数声明 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件:或者像 Pascal 一样的分离的 interface / implementation 段.在需 ...
- MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结
From: http://database.51cto.com/art/201203/323863.htm 网络上很多人咨询mysql是否提供布尔类型?MySQL数据库确实提供布尔类型,此数据类型的关 ...
- Python 字符串 整数 浮点数
• 几个函数: str() : 将一个整数或者浮点数变成字符串 int() : 将一个浮点数或一个字符串变成整数 float : 将一个整数或者字符串变成一个浮点型数据 • 整数的运算永远是精确的,而 ...
随机推荐
- 【Azure 应用服务】在App Service中新建WebJob时候遇见错误,不能成功创建新的工作任务
问题描述 在Azure App Service界面上,添加新的Web Job(工作任务)时,一直添加失败.无详细错误提示,在App Service的Activity Logs(活动日志)中,根本没有添 ...
- K6 在 Nebula Graph 上的压测实践
背景 对于数据库来说,性能测试是一个非常频繁的事情.优化查询引擎的规则,调整存储引擎的参数等,都需要通过性能测试,查看系统在不同场景下的影响. 即便是同样的代码,同样的参数配置,在不同的机器资源配置, ...
- 青少年CTF-Crypto(新手版本2.0,无factor1)
凯撒大帝的征讨之路 题目: lnixoa{1x2azz7w8axyva7y1z2320vxy6v97v9a} 知识点:凯撒加密 我的题解: import base64 #shift得出移位多少,移位后 ...
- 10、mysql的锁
锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢). 在数据库中,除传统的计算资源(如 CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访 ...
- 微信小程序开发:页面分享卡片、风格选择、通道启用等可配置
上文说到,我们部署了定时任务,但是有个地方忘记在上文写了,这里补上,就是定时任务的超时时间问题,超时时间有7200秒: 我们改成7100秒: 再把云函数调用的云对象的超时时间也改下: 超时时间多一点, ...
- offline RL | D4RL:最常用的 offline 数据集之一
pdf:https://arxiv.org/pdf/2004.07219.pdf html:https://ar5iv.labs.arxiv.org/html/2004.07219 GitHub:ht ...
- 单词本z launch = to throw 相关词根 lanc ject jac jet bol bl bal mit miss cast
launch = to throw 词根 launc = lanc = to throw 表示 to throw 的词根有三组 拉丁语的lanc/launc,sip 拉丁语的ject, jac(jet ...
- gitee 流水线 定时触发 不能用,不能白嫖了
gitee 流水线 定时触发 不能用,不能白嫖了 白研究半天了,只好回去拿centos服务器 搞定时任务了
- Ubuntu 16.04 配置NFS
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- [503. 下一个更大元素 II] 单调栈
import java.util.ArrayDeque; import java.util.Deque; class Solution { public static void main(String ...