当前位置: 首页 > news >正文

Golang基础语法-数据类型

在Golang中,每个变量都必须有一个明确的数据类型,这有助于编译器在编译期间检查类型,并提供更好的类型安全性。本文将介绍Golang中常见的数据类型,包括基本类型和复合类型。

1 基本类型

1.1 数值类型

Golang中的数值类型包括整数类型和浮点数类型。其中,整数类型分为有符号整数和无符号整数,如下表所示:

--类型--描述
int8有符号8位整数
int16有符号16位整数
int32有符号32位整数
int64有符号64位整数
uint8无符号8位整数
uint16无符号16位整数
uint32无符号32位整数
uint64无符号64位整数

浮点数类型包括float32和float64两种类型。

以下是数值类型的示例代码:

package mainimport "fmt"func main() {var a int = 10var b float32 = 3.14fmt.Println(a, b)
}

1.2 字符串类型

Golang中的字符串类型使用双引号包围,如"hello world"。字符串是不可变的,也就是说,一旦定义了字符串变量,就不能修改它的值。以下是字符串类型的示例代码:

package mainimport "fmt"func main() {var str string = "hello world"fmt.Println(str)
}

1.3 布尔类型

Golang中的布尔类型只有两个取值:true和false。以下是布尔类型的示例代码:

package mainimport "fmt"func main() {var flag bool = truefmt.Println(flag)
}

2 复合类型

2.1 数组类型

Golang中的数组类型是一种有序的、固定长度的数据类型。数组中的每个元素都具有相同的数据类型。以下是数组类型的示例代码:

package mainimport "fmt"func main() {var arr [5]int = [5]int{1, 2, 3, 4, 5}fmt.Println(arr)
}

2.2 切片类型

Golang中的切片类型是一种动态数组,可以根据需要进行扩展或缩小。切片是由指向底层数组的指针、长度和容量三部分组成。以下是切片类型的示例代码:

package mainimport "fmt"func main() {var arr []int = []int{1, 2, 3, 4, 5}fmt.Println(arr)
}

2.3 映射类型

Golang中的映射类型是一种无序的、键值对的数据类型。键和值可以是任何类型,但所有的键必须是同一类型,所有的值也必须是同一类型。以下是映射类型的示例代码:

package mainimport "fmt"func main() {var m map[string]int = map[string]int{"a": 1, "b": 2, "c": 3}fmt.Println(m)
}

2.4 结构体类型

Golang中的结构体类型是一种复合数据类型,可以将不同类型的数据组合在一起。结构体中的每个字段都有自己的名称和数据类型。以下是结构体类型的示例代码:

package mainimport "fmt"type Person struct {Name stringAge int
}func main() {var p Person = Person{"Tom", 20}fmt.Println(p)
}

2.5 接口类型

Golang中的接口类型是一种抽象数据类型,定义了一组方法。接口类型可以实现多态。以下是接口类型的示例代码:

package mainimport "fmt"type Shape interface {Area() float64
}type Rectangle struct {Width  float64Height float64
}func (r Rectangle) Area() float64 {return r.Width * r.Height
}func main() {var s Shape = Rectangle{Width: 3, Height: 4}fmt.Println(s.Area())
}

3 总结

本文介绍了Golang中常见的数据类型,包括基本类型和复合类型。掌握这些数据类型可以帮助我们更好地理解Golang程序,并编写出更高效、更安全的代码。

最后编辑于:2025-06-15 10:17:10


喜欢的朋友记得点赞、收藏、关注哦!!!

http://www.dtcms.com/a/288662.html

相关文章:

  • Go语言--语法基础6--基本数据类型--map类型
  • Java学习第六十部分——JVM
  • An End-to-End Attention-Based Approach for Learning on Graphs NC 2025
  • 04 51单片机之数码管显示
  • Shell脚本-uniq工具
  • 两个路由器通过不同的网段互联
  • 从TPACK到TPACK - AI:人工智能时代教师知识框架的重构与验证
  • EPLAN 电气制图(十): 继电器控制回路绘制(下)放料、放灰
  • 基于单片机的IC卡门禁系统设计
  • 最大子数组和问题-详解Kadane算法
  • 每日一题7.20
  • OSS文件上传(一):简单上传
  • feignClient 调用详细流程
  • Valgrind Memcheck 全解析教程:6个程序说明基础内存错误
  • 判断一个数是否为质数方法
  • VSCode使用Jupyter完整指南配置机器学习环境
  • c#:TCP服务端管理类
  • 正点原子stm32F407学习笔记10——输入捕获实验
  • 2025 年科技革命时刻表:四大关键节点将如何重塑未来?
  • 内网后渗透攻击过程(实验环境)--3、横向攻击
  • SQL 调优第一步:EXPLAIN 关键字全解析
  • 【已解决】GitHub SSH 连接失败解决方案:Permission Denied (publickey) 错误修复指南
  • [Linux]进程 / PID
  • 30天打牢数模基础-决策树讲解
  • Linux入门篇学习——NFS 服务器的搭建和使用和开发板固件烧录
  • Spring Boot 第一天知识汇总
  • 【Java项目安全基石】登录认证实战:Session/Token/JWT用户校验机制深度解析
  • 相似度计算
  • 「Java案例」利用方法求反素数
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 饱和预测 Saturating Forecasts