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

golang语法-----标准化输入输出

一、标准化输入

1、使用 fmt.Scan 系列 (适合读取简单、被空格隔开的数据)

需要传递变量的内存地址给 Scan 函数,所以变量名前要加 & 符号,表示“把读取到的值放到这个地址对应的变量里”。

package mainimport "fmt"func main() {var name stringvar age intfmt.Print("请输入你的名字和年龄 (用空格隔开): ")// 等待用户输入,比如 "张三 25" 然后回车_, err := fmt.Scan(&name, &age)if err != nil {fmt.Println("输入错误:", err)return}fmt.Printf("你好, %s! 你今年 %d 岁了。\n", name, age)
}

缺点fmt.Scan 遇到空格或换行符就会停止读取当前项。如果你想输入 "San Zhang",它只会把 "San" 读到 name 里。

2、使用 bufio 包 (推荐,强大灵活,首选)

非常适合用来读取一整行(包含空格)的数据。

package mainimport ("bufio""fmt""os""strings"
)func main() {fmt.Print("请输入你的全名: ")// 1. 创建一个读取器,关联到标准输入reader := bufio.NewReader(os.Stdin)// 2. 读取直到遇到换行符 ('\n')input, err := reader.ReadString('\n')if err != nil {fmt.Println("读取输入时发生错误:", err)return}// 3. 清理字符串:ReadString 会把换行符也读进去,需要去掉//    strings.TrimSpace 会去掉字符串首尾的空白字符 (空格、换行符等)name := strings.TrimSpace(input)fmt.Printf("你好, %s! 欢迎你!\n", name)
}

bufio 是处理用户输入的首选方式,因为它能轻松处理包含空格的完整句子。

二、标准化输出

  • fmt.Print(): 原样输出,参数之间会自动加空格,不换行。
  • fmt.Println(): 原样输出,参数之间会自动加空格,在结尾加上换行。
  • fmt.Printf(): 格式化输出,最灵活。

fmt.Printf()的常用占位符:

  • %v: 按值的默认格式输出 (最常用,不知道用啥就用它)
  • %s: 输出字符串
  • %d: 输出十进制整数
  • %f: 输出浮点数 (例如 %.2f 表示保留两位小数)
  • %t: 输出布尔值 (true/false)
  • %T: 输出变量的类型
  • %%: 输出一个百分号 %

示例:

package mainimport "fmt"func main() {name := "李四"age := 30height := 1.78isStudent := false// 使用占位符 %s, %d, %f, %tfmt.Printf("姓名: %s, 年龄: %d, 身高: %.2f米, 是学生吗: %t\n", name, age, height, isStudent)// 输出: 姓名: 李四, 年龄: 30, 身高: 1.78米, 是学生吗: false// 使用 %v (通用格式) 和 %T (类型)fmt.Printf("变量 name 的值是 %v, 类型是 %T\n", name, name)// 输出: 变量 name 的值是 李四, 类型是 stringfmt.Printf("变量 age 的值是 %v, 类型是 %T\n", age, age)// 输出: 变量 age 的值是 30, 类型是 int
}


文章转载自:
http://bylaw.wkuuf.cn
http://amalgamate.wkuuf.cn
http://aconitine.wkuuf.cn
http://carousal.wkuuf.cn
http://cachot.wkuuf.cn
http://abetter.wkuuf.cn
http://bibliokleptomania.wkuuf.cn
http://butty.wkuuf.cn
http://cannabinol.wkuuf.cn
http://artichoke.wkuuf.cn
http://armrest.wkuuf.cn
http://bunraku.wkuuf.cn
http://bodley.wkuuf.cn
http://alexander.wkuuf.cn
http://bullethead.wkuuf.cn
http://blissout.wkuuf.cn
http://accessorize.wkuuf.cn
http://blastproof.wkuuf.cn
http://boeotia.wkuuf.cn
http://adumbrant.wkuuf.cn
http://bushranger.wkuuf.cn
http://brisk.wkuuf.cn
http://burstone.wkuuf.cn
http://bingle.wkuuf.cn
http://alpinism.wkuuf.cn
http://buskin.wkuuf.cn
http://associative.wkuuf.cn
http://branchiae.wkuuf.cn
http://celebret.wkuuf.cn
http://anglomania.wkuuf.cn
http://www.dtcms.com/a/280363.html

相关文章:

  • 渗透测试技术_Nessus工具(三):输出报告
  • 构建 Go 可执行文件镜像 | 探索轻量级 Docker 基础镜像(我应该选择哪个 Docker 镜像?)
  • STM32小实验三--让蜂鸣器响起来
  • Pytorch中张量的索引和切片使用详解和代码示例
  • CSS的初步学习
  • 用语音识别芯片驱动TFT屏幕还有链接蓝牙功能?
  • cursor使用mcp连接mysql数据库,url方式
  • java截取视频帧
  • c#进阶之数据结构(字符串篇)----String
  • C++中list各种基本接口的模拟实现
  • 【Java代码审计(2)】MyBatis XML 注入审计
  • 153.在 Vue 3 中使用 OpenLayers + Cesium 实现 2D/3D 地图切换效果
  • java中的接口
  • JavaScript 动态访问嵌套对象属性问题记录
  • HarmonyOS-ArkUI: Web组件加载流程1
  • 暴力破解:攻破系统的终极密钥
  • Rust指针选择
  • 安装带GPU的docker环境
  • 20250715使用荣品RD-RK3588开发板在Android13下接入USB3.0接口的红外相机
  • 【I3D 2024】Deblur-GS: 3D Gaussian Splatting from Camera Motion Blurred Images
  • 记录一条面试sql题目
  • JS中async/await功能介绍和使用演示
  • 普通字符类型和new String有什么区别
  • 使用JS编写动态表格
  • 【env环境】rtthread5.1.0使用fal组件
  • AI的外挂知识库,RAG检索增强生成技术
  • 【PTA数据结构 | C语言版】将表达式树转换成中缀表达式
  • 数仓面试题
  • 2025最新国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • docker停止所有容器和删除所有镜像