第二周补充:Go语言中&取地址符与fmt函数详解

第二周补充:Go语言中&取地址符与fmt函数详解

在Go语言中,& 是取地址符 ,用于获取变量的内存地址。具体到代码 fmt.Scanln(&celsius) 中:

  • 作用 :&celsius 获取变量 celsius 的内存地址,使得 fmt.Scanln 能够将用户输入的值直接写入该地址对应的变量中。
  • 必要性 :若省略 &,传递的将是 celsius 的值(而非地址),此时 Scanln 无法修改原变量,导致输入失败。
  • 类比 :类似C语言中的指针操作,Go通过指针(显式使用 &)允许函数直接修改外部变量。

关于 fmt 包中函数的参数

1. 输出函数
  • fmt.Print(a ...interface{})

    直接输出参数,不换行,参数间默认用空格分隔。

    示例:fmt.Print("Hello", 123) → 输出 Hello123(无空格,因类型不同可能自动加空格?实际测试可能不同)。

  • fmt.Println(a ...interface{})

    输出参数后自动换行,参数间用空格分隔。

    示例:fmt.Println("Hello", 123) → 输出 Hello 123\n。

  • fmt.Printf(format string, a ...interface{})

    按格式字符串输出,严格匹配占位符(如 %f、%s)。

    示例:fmt.Printf("Value: %.1f", 3.1415) → 输出 Value: 3.1。

2. 输入函数
  • fmt.Scan(&a, &b)

    从标准输入读取数据,按空格分隔值,存入指针参数。

    示例:输入 10 20 → a=10, b=20。

  • fmt.Scanln(&a, &b)

    读取一行(到换行符),按空格分隔值,存入指针参数。

    示例:输入 10 20\n → a=10, b=20(换行符被消费)。

  • fmt.Scanf(format string, &a)

    按指定格式读取输入,类似C的 scanf。

    示例:fmt.Scanf("%d,%f", &i, &f) → 输入 5,3.14。


总结

  • &:用于获取变量地址,使函数能直接修改变量(如输入函数必须用)。
  • fmt 函数参数 :
    • Print/Println:接受任意数量参数,自动处理格式。
    • Printf/Scanf:严格依赖格式字符串,参数类型和数量需匹配。
    • 输入函数(Scan/Scanln/Scanf)必须传递指针 (即 &变量)。
相关推荐
萧瑟余晖1 分钟前
Spring Integration企业集成概览详解
java·后端·spring
Dovis(誓平步青云)4 分钟前
拖动关键帧角色就抽动,动画编辑器怎样补齐中间状态
开发语言·前端·javascript·机器学习·编辑器
小小张说故事5 分钟前
Python 的赋值为什么不会复制对象?拆开引用、浅拷贝与深拷贝
后端·python
行走的陀螺仪7 分钟前
Claude Code 从入门到实战(二):Bash工具、Plan模式与后台任务
开发语言·bash
努力努力再努力wz13 分钟前
【Lua 入门系列】从执行模型到事件驱动:一文理解 Lua 有栈协程、挂起恢复与协作式调度
开发语言·lua
SimonKing13 分钟前
告别纸质合同,使用DocuSeal搭建私有电子签平台
java·后端·程序员
椒颜皮皮虾྅30 分钟前
一套 C# 接口,解锁四类视觉任务:DeploySharp 分类、分割、关键点与旋转框实战
开发语言·分类·c#
2603_965896621 小时前
JavaScript 原型与原型链
开发语言·前端·javascript
朋友圈自动点赞工具1 小时前
Ruby方法查找:对象不存方法
开发语言·前端·ruby·科技资讯
D e re k ZH1 小时前
C++ 模板与泛型编程进阶(No 2)
开发语言·c++