【Golang学习之旅】Go 语言数据类型详解(string、slice、map等)

server/2025/2/7 9:48:40/

文章目录

    • 前言
    • 1. Go语言数据类型概览
    • 2. Go语言基本数据类型
      • 2.1 整型(int,uint,float)
      • 2.2 布尔类型(bool)
      • 2.3 字符串(string)
    • 3. Go 语言复合数据类型
      • 3.1 数组(Array)
      • 3.2 切片(Slice)
      • 3.3 映射(Map)
    • 4. 结构体(Struct)
    • 5. 指针(Pointer)
    • 总结 & 进阶学习方向

前言

✅ 适合人群:Golang 新手 | 后端开发者 | 面试求职者
✅ 文章亮点:超详细解析 + 代码示例 + 实战应用
✅ 目标:掌握 Go 语言核心数据类型,助你写出高效、稳定的 Go 代码!

1. Go语言数据类型概览

Go语言是一种静态强类型语言,所有变量在使用前都必须指定类型,类型一旦确定,就不能随意更改。Go语言的数据类型大致分为以下几类:

类别数据类型说明
基本类型boolstringintfloat常见的基本数据类型
复合类型array(数组)、slice(切片)存储多个元素的集合
映射类型map(哈希表)键值对存储结构
结构体struct自定义数据结构
接口类型interface{}可用于实现多态
指针类型*T存储变量地址
通道类型chan并发通信机制

🔹 为什么要了解 Go 语言数据类型?
✅ 代码更安全(静态类型检查,减少错误)
✅ 性能更优(高效的内存管理)
✅ 更易维护(强类型保证代码稳定性)

2. Go语言基本数据类型

2.1 整型(int,uint,float)

Go语言支持有符号整数无符号整数

var a int = 10  // 标准int类型(与cpu位数有关)
var b int8 = 127  // 8位整数(-127 ~ 127)
var c uint16 = 65535 // 16位无符号整数(0 ~ 65535)
var d int32 = 2147483647 // 32位整数
var e int64 = 9223372036854775807  // 64位整数

🔹 Go 语言的整数类型取值范围:

类别大小取值范围
int88位-128 ~ 127
uint88位0 ~ 255
int1616位-32,768 ~ 32,767
uint1616位0 ~ 65,535
int3232位-2,147,483,648 ~ 2,147,483,647
uint3232 位0 ~ 4,294,967,295
int6464 位-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
uint6464位0 ~ 18,446,744,073,709,551,615
浮点数(float32、float64)
var pi float32 = 3.1415926  // 32位浮点数
var e float64 = 2.718281828 // 64位浮点数(推荐) 

2.2 布尔类型(bool)

var isGoFun bool = true
fmt.Println(isGoFun) // 输出: true

🔹 布尔值只有 truefalse,不能与 01 互换。

2.3 字符串(string)

Go 语言的 string 是 不可变 的 UTF-8 编码字符串,默认使用双引号"" 定义。

var hello string = "Hello, Golang!"
fmt.Println(hello)

🔹 多行字符串(使用反引号 `)

var multiLine = `第一行
第二行
第三行`
fmt.Println(multiLine)

🔹 字符串拼接

s1 := "Hello"
s2 := "Go"
result := s1 + ", " + s2 + "!"
fmt.Println(result) // 输出: Hello, Go!

3. Go 语言复合数据类型

3.1 数组(Array)

Go 语言数组是 固定大小的,一旦定义后,不能扩展。

var arr [3]int = [3]int{1, 2, 3} // 方式1
arr2 := [...]int{4, 5, 6}        // 方式2
fmt.Println(arr, arr2) 

🔹 遍历数组

for i, v := range arr {fmt.Printf("索引: %d, 值: %d\n", i, v)
}

3.2 切片(Slice)

🔹 切片是 Go 语言最常用的数据结构,类似动态数组,可变长度。

slice := []int{1, 2, 3}
slice = append(slice, 4, 5) // 添加元素
fmt.Println(slice) // [1 2 3 4 5]

🔹 切片截取

subSlice := slice[1:3] // 获取索引 1 到 3 之间的元素
fmt.Println(subSlice) // [2 3]

3.3 映射(Map)

🔹 Map 是 Go 语言中的哈希表(键值对存储)

person := map[string]int{"Alice": 25, "Bob": 30}
fmt.Println(person["Alice"]) // 输出 25person["Charlie"] = 35 // 添加元素
delete(person, "Bob") // 删除元素

🔹 遍历 Map

for k, v := range person {fmt.Printf("Key: %s, Value: %d\n", k, v)
}

4. 结构体(Struct)

🔹 Go 语言支持自定义数据类型(类似面向对象的类)

type Person struct {Name stringAge  int
}func main() {p := Person{Name: "Alice", Age: 25}fmt.Println(p.Name, p.Age) // Alice 25
}

5. 指针(Pointer)

🔹 Go 语言的指针用于存储变量的地址

var a int = 42
var p *int = &a // 指针 p 指向变量 a
fmt.Println(*p) // 通过指针解引用,输出 42

总结 & 进阶学习方向

📌 本篇文章介绍了 Go 语言的常见数据类型,包括 string、slice、map 等,帮助你掌握 Go 语言基础。
📌 进阶学习:Go 并发(Goroutine)、微服务(gRPC)、Web 开发(Gin 框架)
📌 学习资源:Go 官方文档


http://www.ppmy.cn/server/165645.html

相关文章

go-zero学习笔记(四)

在api中访问rpc服务 必备条件 api端(客户端)有rpc端的pb文件,以及客户端文件(非必要),且已知rpc端的服务注册方式(etcd、k8s)及地址,端口等 api端配置文件编写 # 新增如…

【探商宝】DeepSeek 最新模型对 ChatGPT 的影响及行业新变革

在人工智能领域的激烈竞争中,DeepSeek 发布的最新模型无疑给 ChatGPT 带来了巨大的冲击,同时也促使整个行业出现了一系列引人注目的变化,如 ChatGPT 的降价以及搜索功能无需登录即可使用等。 一、DeepSeek 最新模型的技术优势 架构创新与效…

React 第二十二节 useSyncExternalStore Hook 常见问题及用法详解

1、概述 在React 中我们通常会使用 useState useReducer 进行数据状态更新,但是当我们需要对外部的数据状态进行处理时候,我们需要使用React 提供的新Hook,useSyncExternalStore 让我们可以在React 内部订阅外部数据属性的状态,当…

最大值的期望 与 期望的最大值

期望的最大值与最大值的期望 先上结论: m a x i E [ X i ] ≠ E [ m a x i X i ] max_i \mathbb{E}[X_i]\neq \mathbb{E}[max_i X_i] maxi​E[Xi​]E[maxi​Xi​] 情况一:最大值和数学期望都关于自变量 i i i 在这种情况下,最大值与期望都依赖于同一…

git bash添加tree命令

1 git bash环境没有自带tree命令 在git bash里面输入命令:tree,弹出错误如下,解决git Bash下安装使用tree 2 官网下载 官网下载:Tree for Windows 将下载的tree-1.5.2.2-bin.zip解压,将tree-1.5.2.2-bin\bin\tree.…

Go-Gin Web 框架完整教程

1. 环境准备 1.1 Go 环境安装 Go 语言(或称 Golang)是一个开源的编程语言,由 Google 开发。在开始使用 Gin 框架之前,我们需要先安装 Go 环境。 安装步骤: 访问 Go 官网下载页面:https://golang.org/dl…

app专项测试(网络测试流程)

一、网络测试的一般流程 step1:首先要考虑网络正常的情况 ① 各个模块的功能正常可用 ② 页面元素/数据显示正常 step2:其次要考虑无网络的情况 ① APP各个功能在无网络情况下是否可用 ② APP各个页面之间切换是否正常 ③ 发送网络请求时是…

langchain教程-3.OutputParser/输出解析

前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…