Go 数据类型

小万哥
• 阅读 67

数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。

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", x, x)
  fmt.Printf("类型: %T, 值: %v", 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", x, x)
  fmt.Printf("类型: %T, 值: %v", 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", 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", y, y)
}

float64关键字

与float32相比,float64数据类型可以存储更大范围的数字。

示例

以下示例展示了如何声明一个float64类型的变量:

package main

import (
  "fmt"
)

func main() {
  var x float64 = 1.7e+308
  fmt.Printf("类型:%T,值:%v", 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)
}

结果:

Type: string, value: Hello! Type: string, value: Type: string, value: World 1

最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

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

点赞
收藏
评论区
推荐文章
梦想橡皮擦 梦想橡皮擦
2年前
2. 无门槛学会数据类型与输入、输出函数,滚雪球学 Python
学习一门语言应该是一件充满乐趣的事情,为什么要把它变难呢?二、Python基本数据类型与输入、输出函数2.1基本数据类型对于任何一门语言都存在一些基本类型,Python也不例外,只不过数据类型在Python中要远远比其他语言简单,基本分为以下几种。1.数值数据类型,常见的是整数和浮点数2.布尔值数据类型,就是常说的真和假
Stella981 Stella981
1年前
JavaScript的深拷贝和浅拷贝
一、数据类型数据分为基本数据类型(String,Number,Boolean,Null,Undefined,Symbol)和对象数据类型。、1.基本数据类型的特点:直接存储在栈(stack)中的数据2.引用数据类型的特点:存储的是该对象在栈中引用,真实的数据放在堆内存里。引用数据类型在栈中存储了指针,该指针指向堆中该实
Wesley13 Wesley13
1年前
Java中的基本数据类型和引用数据类型的区别
一、前言众所周知Java是一种强类型语言,在Java语言中,Java的数据类型一共分为两大类,分别为基本数据类型和引用数据类型,其中基本数据类型细分小类可分为整数类型、浮点类型、字符类型、布尔类型这四小类。二、基本数据类型和引用数据类型1\.基本数据类型只有
Wesley13 Wesley13
1年前
Mysql 数据类型、约束类型
mysql数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUME
Wesley13 Wesley13
1年前
MySQL数据类型全解析
1概述本文主要介绍了MySQL的各种数据类型,版本为8.x,MySQL的数据类型可以分为六类:数值类型,日期时间类型,字符串类型,二进制类型,JSON类型与空间数据类型.2数值类型数值类型是最基本的类型,可以分为整数类型与浮点数类型.2.1整型类型字节数无符号范围有符号范围TI
Wesley13 Wesley13
1年前
Java int与Integer的区别
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别:int是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象1.Java中的数据类型分为基本数据类型和复杂数据类型int是前者而integer是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为n
Wesley13 Wesley13
1年前
MySQL数据库DDL、DML详解
一、MySQL数据库数据类型<1MySQL数据库中支持多种数据类型数值型字符型日期型<2常用的数据类型整型int:整型,存储整数int(M):M表示预期值,与存储大小和数值的范围无关idi
Wesley13 Wesley13
1年前
Java基础(二)数据类型
  数据类型主要分为基本类型和引用类型两大类。  一、基本类型  1.基本类型又分为数值类型和boolean类型,  (1)数值类型包括浮点数类型、整数类型和字符类型  整型                                          浮点型(初始化时需要加f或d)  字符类型  byte    
Wesley13 Wesley13
1年前
Go语言数据类型
\TOC\Go语言是一种静态类型的编程语言,在Go编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。编译器在进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么。!(htt
小万哥 小万哥
3天前
Python 内置数据类型详解
内置数据类型在编程中,数据类型是一个重要的概念。变量可以存储不同类型的数据,不同类型可以执行不同的操作。Python默认内置了以下这些数据类型,分为以下几类:文本类型:str数值类型:int、float、complex序列类型:list、tuple、ran