解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。

数据类型

数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。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。

浮点数数据类型有两个关键字:

  • float32 32位 -3.4e+38 到 3.4e+38。
  • float64 64位 -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,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章
|
19天前
|
Dart 安全 编译器
Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
在 Flutter 开发中,`dynamic` 类型提供了灵活性,但也带来了类型安全性问题。本文深入探讨 `dynamic` 类型及其与其他类型的转换,介绍如何使用 `as` 关键字、`is` 操作符和 `whereType<T>()` 方法进行类型转换,并提供最佳实践,包括避免过度使用 `dynamic`、使用 Null Safety 和异常处理,帮助开发者提高代码的可读性和可维护性。
69 1
|
13天前
|
安全 测试技术 Go
Go语言中的并发编程模型解析####
在当今的软件开发领域,高效的并发处理能力是提升系统性能的关键。本文深入探讨了Go语言独特的并发编程模型——goroutines和channels,通过实例解析其工作原理、优势及最佳实践,旨在为开发者提供实用的Go语言并发编程指南。 ####
|
17天前
|
Go
|
2月前
|
Go
Go字节数组与字符串相互转换
Go字节数组与字符串相互转换
36 3
|
2月前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
2月前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
2月前
|
存储 Go
go语言字符串变小写
go语言字符串变小写
|
2月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
3月前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
432 0
|
3月前
|
存储 安全 程序员

推荐镜像

更多