最近越发觉得混不下去了,还是开始重新学 GO 了,也是比较后悔之前学 GO 没有坚持下去。这次一定要坚持下去。
今天学习输入输出的时候发现一个神奇的地方。
话不多说直接贴代码。
package main
import "fmt"
func main() {
var x int
var y float64
fmt.Println("请输入一个整数,一个浮点类型:")
fmt.Scanln(&x, &y) //读取键盘的输入,通过操作地址,赋值给x和y 阻塞式
fmt.Printf("x的数值:%d,y的数值:%f\n", x, y)
fmt.Scanf("%d,%f", &x, &y)
fmt.Printf("x:%d,y:%f\n", x, y)
}
很简单的一个输入输出的代码,输出的结果如下图
可以看到,第二次输入 y 之后,打印出的 y 数值并没有变成想象中的 3.250000
为了方便查看原因,我又将两次输入 y 之后 y 的地址打印了一遍。
package main
import "fmt"
func main() {
var x int
var y float64
fmt.Println("请输入一个整数,一个浮点类型:")
fmt.Scanln(&x, &y) //读取键盘的输入,通过操作地址,赋值给x和y 阻塞式
fmt.Printf("x的数值:%d,y的数值:%f,%p\n", x, y, y)
fmt.Scanf("%d,%f", &x, &y)
fmt.Printf("x:%d,y:%f,%p\n", x, y, y)
}
然后打印的结果如下:
可以看到地址是没有变过的,这就奇怪了。于是我又将 x 的数值前后两次也改了下对比看看。
可以看到 x 两次输入分别是 100 和 102,输出也同样是 100 和 102。而 y 两次输入分别是 3.14 和 3.25,但是输出却都是 3.140000。
萌新实在有点懵,请各位大佬轻喷。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于