Go语言第四章(类型转换)

作者:小满zs日期:2026/8/1

类型转换

实际开发里,不同类型之间经常需要互相转换:字符串转数字、数字转字符串、浮点数转整数、整数转浮点数,等等。

数字的转换

比如有一个浮点数 3.1415926535,想把它变成整数,可以用 int() 来转换:

1package main
2import "fmt"
3
4func main() {
5	num := 3.1415926535
6	intNum := int(num)
7	fmt.Println(intNum) // 3
8}
9

可以看到,int() 会把浮点数转成整数,并直接舍去小数部分(不是四舍五入)。

其他数值类型的转换写法也类似,记起来很简单——跟定义类型时的名字一模一样:

  • int():转为 int
  • int8():转为 int8
  • int16():转为 int16
  • int32():转为 int32
  • int64():转为 int64
  • uint():转为 uint
  • uint8():转为 uint8
  • uint16():转为 uint16
  • uint32():转为 uint32
  • uint64():转为 uint64
  • float32():转为 float32
  • float64():转为 float64

数字转字符串

数字和字符串之间的转换要用 strconv(string convert,字符串转换)包。比如把整数 3 转成字符串:

1package main
2
3import (
4	"fmt"
5	"strconv"
6)
7
8func main() {
9	num := 3
10	strNum := strconv.Itoa(num)
11	fmt.Printf("类型: %T,值: %v", strNum, strNum)
12	// 类型: string,值: 3
13}
14

几点说明:

  1. 导入多个包时,用 () 分组,每个包独占一行。
  2. strconv.Itoa() 就是 Int to ASCII:把整数转成字符串(字符串本质上是字符序列)。
  3. fmt.Printf() 里,%T 打印类型,%v 打印值。

字符串转数字

反过来,字符串转数字也很常见。Go 里字符串和数字不能直接运算,必须先转成同一类型。比如这样会报错:

1var a = "10"
2var b = 20
3var c = a + b // 错误:字符串和数字不能直接运算
4

这时可以用 strconv.Atoi() 把字符串转成整数:

1package main
2
3import (
4	"fmt"
5	"strconv"
6)
7
8func main() {
9	str := "10"
10	num, _ := strconv.Atoi(str)
11	fmt.Printf("类型: %T,值: %v", num, num)
12	// 类型: int,值: 10
13}
14

AtoiASCII to Int 的缩写。它会返回两个值:转换结果和错误。转换失败时第二个返回值不为 nil;这里用 _ 忽略错误,表示暂时不处理失败情况。

字符串转布尔值

字符串转布尔用 strconv.ParseBool()。它同样返回「结果 + 错误」两个值:

1package main
2
3import (
4	"fmt"
5	"strconv"
6)
7
8func main() {
9	str := "true"
10	b, _ := strconv.ParseBool(str)
11	fmt.Printf("类型: %T,值: %v", b, b)
12	// 类型: bool,值: true
13}
14

ParseBool 能识别的真值有:1tTTRUEtrueTrue;假值有:0fFFALSEfalseFalse。其他字符串都会转换失败。

布尔值转字符串

反过来,用 strconv.FormatBool() 把布尔值转成字符串,结果只会是 "true""false"

1package main
2
3import (
4	"fmt"
5	"strconv"
6)
7
8func main() {
9	flag := true
10	str := strconv.FormatBool(flag)
11	fmt.Printf("类型: %T,值: %v", str, str)
12	// 类型: string,值: true
13}
14

作业

  1. 数值转换:声明一个 float64 变量,值为 9.99,用 int() 转成整数并打印;再把结果用 float64() 转回去,观察小数部分是否还在。
  2. 数字转字符串:声明一个 int 变量表示年龄,用 strconv.Itoa() 转成字符串,再用 fmt.Printf 打印类型和值(确认类型是 string)。
  3. 字符串转数字:声明两个字符串 "15""27",分别用 strconv.Atoi() 转成整数后相加,打印和。
  4. 布尔转换:把字符串 "1""false""yes" 分别传给 strconv.ParseBool(),打印每次转换的结果和错误(这次不要用 _ 忽略错误,看看哪些能成功)。
  5. 综合练习:声明字符串价格 "199.5" 和折扣标记 "true"。先把价格用 strconv.ParseFloat(str, 64) 转成 float64,折扣标记用 ParseBool 转成布尔;若享受折扣则打八折,最后用 strconv.FormatFloat 把应付金额转成字符串并打印。

Go语言第四章(类型转换)》 是转载文章,点击查看原文


相关推荐


Python生成器与惰性求值:从yield说起的一场"暂停魔法"
卷无止境2026/7/24

写Python代码写到一定阶段,几乎所有人都会碰到一个绕不过去的坑——处理大数据集的时候,list看着简单顺手,用着用着内存就爆了。这时候有人会甩给你一句话,"用生成器啊"。但生成器到底是什么,yield凭什么能让函数中途停下来又重新跑起来,这背后藏着的其实是Python运行时一套相当精巧的机制。下面就把这套机制拆开揉碎,一步步讲清楚。 🔍 生成器到底是什么 普通函数被调用时,Python会立刻执行函数体,跑到return或者函数末尾就结束,栈帧被销毁,一切归零。生成器函数长得跟普通函数几乎


V040:RAG 检索增强生成的工程链路解构与生产级系统设计
胡萝卜术2026/7/16

V040:RAG 检索增强生成的工程链路解构与生产级系统设计 摘要:本文从工程视角系统解构 RAG(Retrieval-Augmented Generation)的完整技术链路,涵盖文档工程、向量检索原理、相似度评分机制、元数据架构、上下文窗口管理、生产级组件选型及高级检索模式。文章以可观测的中间结果为导向,建立从原型验证到生产部署的技术决策框架,并配套面试应答策略。 引言:RAG 认知的三个层次 对 RAG(Retrieval-Augmented Generation)的理解可分为三个递


AI推理成本降本的三条技术路径:从OpenAI自研芯片到MoE架构的工程化分析
小K讲AI营销2026/7/7

摘要 2026年,AI推理成本已成为制约大模型商业化的核心瓶颈。OpenAI联合博通推出推理专用芯片Jalapeño,推理成本降低50%;DeepSeek通过MoE架构将推理价格压至6元/百万Token,与Claude的181元形成30倍差距。本文从工程化视角分析当前AI推理降本的三条主要技术路径:专用芯片、模型架构优化、系统级调度,并结合实际数据探讨各路径的可行性与局限。 一、推理成本已成为商业化的核心瓶颈 2026年,全球AI算力支出达到500亿美元(数据来源:钛媒体/布罗克森国会证词


MinerU 3.4.0 PDF/文档转 Markdown/Word软件免安装一键启动整合包
2501_946908082026/6/29

一、软件简介 本软件基于 MinerU 3.4.0 开源文档解析引擎,提供了一套开箱即用的图形化文档转换工具。它能够将 PDF、图片、Office 文档(DOCX/PPTX/XLSX)等内容精准地转换为 Markdown 文本或 Word 文档,同时保留原始文档的版面结构和排版信息。下载解压后一键启动即可使用。 二、主要功能特点 1. 多格式输入支持 文件类型格式PDF.pdf图片.jpg, .jpeg, .png, .gif, .webp, .svg, .bmp, .tiff,


蓝速科技 AI 数字人部署与交互实战指南
蓝速科技2026/6/20

在酒店大堂或企业展厅部署 AI 数字人时,最让人头疼的往往不是硬件安装,而是最终呈现效果“假”。很多项目落地后,数字人嘴巴乱动、声音和画面对不上,甚至只是循环播放预制视频,完全无法应对现场客人的随机提问。这种“玩具级”的交互体验,不仅无法提升品牌形象,反而会让访客感到尴尬,直接拉低服务质感。 造成这种现象的核心原因,通常在于硬件算力不足导致渲染掉帧,或是算法配置未能开启实时唇形同步功能。要解决这些问题,不能仅靠堆砌参数,而需要从选型策略、环境搭建到核心算法调优的全链路精细化操作。只有确保每一帧画


muduo库 --socket的封装
爱装代码的小瓶子2026/6/12

本系列主要旨在帮助初学者学习和巩固 Linux 高性能网络编程,同时记录笔者在学习与手写 muduo 网络库项目过程中的心得体会。 本系列会围绕 muduo 网络库的核心思想展开,包括 Reactor 模式、事件循环、Channel、Poller、TcpServer、TcpConnection、Buffer、线程池等内容。 个人主页: 爱装代码的小瓶子 文章系列: Linux 2. C++ 3. muduo 网络


【无标题】
Jiliang.Li2026/6/5

最近找到一个免费云服务器 近期在刷一套题,就想着找一个免费的云服务器,部署一个在线题库,有空的时候刷刷题,正好找到了这个 阿贝云https://www.abeiyun.com/,1G网站空间月5G流量50M数据库空间,而且重要的是 免费! 免费! 免费合适的很啊。随手写了一个刷题网站布上,看看效果: 希望阿贝云https://www.abeiyun.com/坚持住免费云服务啊,祝我冲100分


【C++】深入浅出,理解 C++ 奇异递归模板模式(CRTP)
PAK向日葵2026/5/30

在现代 C++ 中,除了基于虚函数的运行时多态,还有一种被称为"奇异递归模板模式"(Curiously Recurring Template Pattern,CRTP)的静态多态(调用目标在编译期确定),被广泛应用于 Chromium、V8、LLVM、UE 等大型项目当中。 1. 一个具体的例子 下面先给出一个我们最熟悉不过的基于虚函数的运行时多态的例子: #include <iostream> class Animal { public: virtual void Speak() =


手写 Mini React:从 JSX 到虚拟 DOM 再到 render,搞懂 React 底层原理
不会敲代码12026/5/8

手写 Mini React:从 JSX 到虚拟 DOM 再到 render,搞懂 React 底层原理 引言:为什么要手写 React? 我日常写 React 组件很熟练: function App() { return ( <div style={{ background: 'salmon' }}> <h1>Hello React</h1> <h2>Hello Didact</h2> </div> ); } 但写完之后脑子里总有几个问题挥之不去


MyBatis-Plus:让数据库操作飞起来的神器
小码哥_常2026/4/28

MyBatis-Plus:让数据库操作飞起来的神器 一、MyBatis-Plus 是什么? 在 Java 开发的世界里,数据库操作是不可或缺的一部分。MyBatis 作为一款优秀的持久层框架,深受开发者喜爱,而 MyBatis-Plus 则是在 MyBatis 基础上诞生的强大增强工具。它就像是给 MyBatis 这位 “武林高手” 配备了一套超级装备,让开发变得更加高效和便捷。 MyBatis-Plus 秉持着 “只做增强不做改变” 的设计理念 ,这意味着当你引入它到项目中时,就像给原有的 M

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读