Golang中的fmt包:格式化输入输出的利器

Golang中的fmt包:格式化输入输出的利器

在软件开发的世界里,fmt包就像是一位忠实的伙伴,始终陪伴着开发人员。它简化了格式化输入输出的过程,让打印和扫描数据变得轻松自如。无论是向控制台输出简单的消息,还是处理复杂的字符串格式化,fmt包都展现出了其强大而灵活的特性。它是开发人员的得力助手,让我们能够以更高效、更有表现力的方式与程序交互。

fmt包是什么

在Go语言中,fmt包是一个非常重要且常用的标准库,提供了格式化输入输出的功能。它被广泛用于打印和扫描数据,以及进行字符串和日志的处理。fmt包为开发人员提供了强大而灵活的工具,使得处理各种输入输出需求变得简单而直观。

resize

格式化输出

fmt包提供了多个函数用于格式化输出,最常用的是Printf、Println和Print函数。下面是它们的简单示例:

  • Printf函数:用于格式化输出到标准输出。它接受一个格式字符串作为第一个参数,类似于C语言中的printf函数。
    fmt.Printf("Hello, %s! You are %d years old.\n", "John", 25)
    // 输出:Hello, John! You are 25 years old.
  • Println函数:用于输出到标准输出,并在输出的末尾添加一个换行符。
    fmt.Println("Hello, World!")
    // 输出:Hello, World!
  • Print函数:用于输出到标准输出,不添加换行符。
    fmt.Print("Hello, ")
    fmt.Print("World!")
    // 输出:Hello, World!

这些函数都支持格式化字符串中的占位符,可以按照指定的格式输出各种类型的数据。

格式化输入

除了输出,fmt包还提供了Scan和Scanf函数用于格式化输入。这些函数可以从标准输入读取用户输入,并将输入的内容存储到指定的变量中。

  • Scan函数:用于读取用户输入,并将输入的内容存储到指定的变量中。
    var name string
    fmt.Print("Enter your name: ")
    fmt.Scan(&name)
    fmt.Printf("Hello, %s!\n", name)
  • Scanf函数:用于读取用户输入,并按照指定的格式将输入的内容存储到指定的变量中。
    var age int
    fmt.Print("Enter your age: ")
    fmt.Scanf("%d", &age)
    fmt.Printf("You are %d years old.\n", age)

这些函数在读取用户输入时会阻塞程序的执行,直到用户输入完成并按下回车键。

错误处理与调试

fmt包的另一个重要功能是错误处理和调试信息输出。其中,Errorf函数和Fprintf函数是常用的函数:

  • Errorf函数:用于生成格式化的错误信息,并返回一个错误值。
    import "errors"
    
    func divide(a, b float64) (float64, error) {
        if b == 0 {
            return 0, fmt.Errorf("division by zero")
        }
        return a / b, nil
    }
    
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    }
  • Fprintf函数:用于将格式化的字符串输出到指定的io.Writer。
    import "os"
    
    fmt.Fprintf(os.Stderr, "An error occurred: %s\n", err)

这些函数可以帮助我们在程序中捕捉错误并输出有用的调试信息,以便进行错误处理和调试。

更多函数和高级用法

除了上述介绍的常用函数,fmt包还提供了许多其他有用的函数,如Sprintf、Scanln、Fscan和Fprintln等。这些函数可以满足更复杂的格式化输入输出需求。

此外,fmt包还支持自定义类型的格式化输出,通过实现Stringer接口和Error接口来自定义类型的字符串输出和错误处理。

总结

fmt包是Go语言中一个非常强大和实用的标准库,提供了丰富的格式化输入输出功能,可以满足我们的日常开发需求。通过学习和掌握fmt包的使用,我们可以实现数据的格式化输出、读取用户输入、错误处理和调试信息输出等操作,提高代码的可读性和开发效率。无论是在控制台应用程序还是Web应用程序中,fmt包都是我们经常使用的工具之一。通过合理地利用fmt包的函数和功能,我们可以更好地处理输入输出和错误处理,使程序更加健壮和可靠。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/385703.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】S2 数学基础 P1 线性代数(上)

目录 基本数学对象标量与变量向量矩阵张量降维求和非降维求和累计求和 点积与向量积点积矩阵-向量积矩阵-矩阵乘法 深度学习的三大数学基础 —— 线性代数、微积分、概率论; 自本篇博文以下几遍博文,将对这三大数学基础进行重点提炼。 本节博文将介绍线…

涛哥聊Python | pymunk,一个强大的 Python 库!

本文来源公众号“涛哥聊Python”,仅用于学术分享,侵权删,干货满满。 原文链接:pymunk,一个强大的 Python 库! 大家好,今天为大家分享一个强大的 Python 库 - pymunk。 Github地址:…

计算机二级C语言的注意事项及相应真题-4-程序修改

目录: 31.逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c所指数组中,形成一个新的字符串32.求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中33.将一个十进制整数转换成r(二…

Vulnhub靶场 DC-9

目录 一、环境搭建 二、信息收集 1、主机发现 2、指纹识别 三、漏洞复现 1、dirsearch目录探测 2、sqlmap注入测试 3、文件包含漏洞 4、Knockd敲门服务 5、ssh爆破 ​​​​​​​6、提权 四、提取flag 一、环境搭建 Vulnhub靶机下载: 官网地址:https://…

Spring Boot 笔记 007 创建接口_登录

1.1 登录接口需求 1.2 JWT令牌 1.2.1 JWT原理 1.2.2 引入JWT坐标 1.2.3 单元测试 1.2.3.1 引入springboot单元测试坐标 1.2.3.2 在单元测试文件夹中创建测试类 1.2.3.3 运行测试类中的生成和解析方法 package com.geji;import com.auth0.jwt.JWT; import com.auth0.jwt.JWTV…

2.第一个Electron程序

目录 一、前言二、基本运行结构三、代码详解四、打包 一、前言 原文以及系列文章后续请参考:第一个Electron程序 上一章我们完成了Electron的环境搭建,本章就开始详解如何使用Electron开发一个完整的Electron桌面端程序。 注意开发环境,个…

可视化工具:将多种数据格式转化为交互式图形展示的利器

引言 在数据驱动的时代,数据的分析和理解对于决策过程至关重要。然而,不同的数据格式和结构使得数据的解读变得复杂和困难。为了解决这个问题,一种强大的可视化工具应运而生。这个工具具有将多种数据格式(包括JSON、YAML、XML、C…

【在Linux世界中追寻伟大的One Piece】Linux是从哪里来的?又是怎么发展的?基本指令你知道哪些?

目录 1 -> Linux背景 1.1 -> Linux发展史 1.1.1 -> UNIX发展历史 1.1.2 -> Linux发展历史 1.2 -> 开源 1.3 -> 官网 1.4 -> 企业应用现状 1.5 -> 发行版本 1.6 -> OS概念,定位 2 -> Linux下基本指令 2.1 -> Is指令 2…

不懂编程?节点包来凑——Dynamo常用节点包推荐(上)

由于篇幅有限,本次文章我们分上、下两篇,来分享给大家。 Dynamo作为一款辅助三维设计工具,他可以通过图形化的编程,帮我们解决很多在设计或者建模过程中遇到的小问题;同时他作为一款可视化编程软件,学起来…

1921:【02NOIP普及组】过河卒

1921:【02NOIP普及组】过河卒 【题目描述】 如图,A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。 同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有…

turtle画闪烁发光的字体

使用随机生成的RGB颜色来绘制文本 # Author : 小红牛 # 微信公众号:WdPython import turtle as t import random import timet.title(闪烁发光的字体) t.setup(550, 100) t.bgcolor(black) t.ht()# 1.定义一个函数来生成随机RGB颜色 def get_RGB():return ("#…

五.实战软件部署 1-3实战章节-前言MYSQL 5.7版本在centos系统安装MYSQL 8.0版本在centos系统安装

目录 五.实战软件部署 1-实战章节-前言 五.实战软件部署 2-MYSQL 5.7版本在centos系统安装 1-配置yum仓库 2-使用yum安装mysql 3-安装完成后,启动mysql并配置开机自启动 4-检查mysql的运行状态 --配置 1-获取mysql的初识密码 2-登录mysql数据库系统 3-修改…

网安常用的三个攻击方式

1.渗透测试执行标准(PTES) 渗透测试执行标准由7个部分组成,包括前期交互、情报收集、威胁建模、漏洞分析、渗透利用、后渗透、撰写报告。在中国,渗透测试必须经过授权,否则就违背了网络安全法。前期交互主要指开展渗透…

书生谱语-基于 InternLM 和 LangChain 搭建知识库

大语言模型与外挂知识库(RAG)的优缺点 RAG方案构建与优化 作业 在创建web_demo时,需要根据教程将服务器端口映射到本地端口,另外需要将链接的demo从服务器中复制出来,不要直接从服务器打开demo页面,不然会…

Redis 单线程

文章目录 Redis单线程架构Redis 单线程访问速度IO多路复用原理 Redis单线程架构 Redis的单线程架构的效果为:Redis的单线程是对于服务端而言的,Redis允许多个Redis用户端同时在线操作,但同时只有一个用户端在和服务端交互。多个用户同时发送…

VMware清理拖拽缓存 Ubuntu硬盘情况占用分析

这两天在尝试编译Linux源码,我在win上将源码下载下来然后复制到ubuntu上,这一步我粗略看到了三种方法:安装VM tools,就可以使文件正常的在win和ubuntu中复制剪切;使用scp命令将win和linux系统链接起来;使用…

英伟达依托AI市值超谷歌,这波AI浪潮,你赶上了吗

随着人工智能(AI)技术的迅猛发展,全球科技行业的竞争格局正在发生着翻天覆地的变化。PS:如果你需要使用ChatGPT,可以参考这篇文章:【新手向】ChatGPT入门指南 - 订阅GPT4之前必须了解的十件事情 英伟达,一家以其高性能…

《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)

文章目录 6.1 CI/CD基础6.1.1 基础知识讲解6.1.2 重点案例:为 Python Web 应用实现 CI/CD6.1.3 拓展案例 1:自动化部署到云平台6.1.4 拓展案例 2:使用 Docker 容器化部署 6.2 Git 与自动化测试6.2.1 基础知识讲解6.2.2 重点案例:为…

二叉树的垂直遍历

1.题目 这道题是2024-2-13的签到题,题目难度为困难。 考察的知识点是DFS算法和自定义排序。 题目链接:二叉树的垂直遍历 给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言&#xff…

卷积神经网络(CNN)

本文仅在理论方面讲述CNN相关的知识,并给出AlexNet, Agg, ResNet等网络结构的代码。 1.构成 ​ 由输入层、卷积层、池化层、全连接层构成。 输入层:输入数据卷积层:提取图像特征池化层:压缩特征全连接层:为输出准备…
最新文章