数据类型

数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。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,关注后即可获取最新文章推送

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

解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍的更多相关文章

  1. Java 集合系列 05 Vector详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  2. Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  3. Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  4. Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  5. Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  6. Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  7. 速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array

    [源码下载] 速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array 作者:webabcd 介绍速战速决 之 PHP 数据类型 boo ...

  8. Python函数声明以及与其他编程语言数据类型的比较

    1.函数声明 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件:或者像 Pascal 一样的分离的  interface / implementation 段.在需 ...

  9. MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结

    From: http://database.51cto.com/art/201203/323863.htm 网络上很多人咨询mysql是否提供布尔类型?MySQL数据库确实提供布尔类型,此数据类型的关 ...

  10. Python 字符串 整数 浮点数

    • 几个函数: str() : 将一个整数或者浮点数变成字符串 int() : 将一个浮点数或一个字符串变成整数 float : 将一个整数或者字符串变成一个浮点型数据 • 整数的运算永远是精确的,而 ...

随机推荐

  1. 尝试通过uniapp仿微信页面

    最近一直想弄一个app,然后刚好看到Uniapp这个技术,然后最近就用几个晚上琢磨了下: 先看下成果: 1.通讯页面,这个是通过插件uni-indexed-list 索引列表 进行改造过后:改造过程还 ...

  2. 【LeetCode字符串#04】左旋转字符串,以及反转函数使用说明

    左旋转字符串 力扣题目链接(opens new window) 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"a ...

  3. 【Azure Fabric Service】Service Fabric 托管群集通过 Connect-ServiceFabricCluster 连接时候报错 CertificatedNotMatched

    问题描述 Service Fabric 托管群集, 使用Key Vault中证书,把证书导入到本地安装后,使用该证书的 Thumbprint 作为指令 Connect-ServiceFabricClu ...

  4. Isito 入门(二):Istio 的部署

    本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 2,部署 Istio 安装 Helm 部署 istio-base 部署 istiod 部署 istio-ingr ...

  5. 深入解析ASP.NET Core MVC应用的模块化设计[上篇]

    ASP.NET Core MVC的"模块化"设计使我们可以构成应用的基本单元Controller定义在任意的模块(程序集)中,并在运行时动态加载和卸载.这种为"飞行中的飞 ...

  6. “田由甲” - Kafka重复消费线上问题暴雷

    Kafka作为一款高性能.分布式的消息队列系统,在大数据领域被广泛应用.然而,在使用Kafka时,重复消费问题是一个常见的挑战,可能会对系统的数据一致性和业务逻辑造成影响.我知道Kafka这个名词时还 ...

  7. Openssl命令详解 - 密钥篇

    非对称算法密钥生成和公钥提取 # ecc算法 openssl ecparam -out pri.key -name prime256v1 -genkey #生成ec密钥,国密使用-name SM2 o ...

  8. iVCam 可以当电脑的摄像头 同一个wifi

    iVCam 可以当电脑的摄像头 同一个wifi

  9. [好文推荐] vue3 源码分析 mini-vue 写的不错

    [阮一峰推荐]学习 vue3 源码的利器 git clone https://github.com/cuixiaorui/mini-vue.git

  10. Linux 串口驱动实例简单分析(x86 8250驱动(16550A),TIOCMGET, TIOCMSET, RTS)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...