Golang Playground 示例:Lscyy3dKXLh 代码分享
Golang Playground 示例:Lscyy3dKXLh 代码分享 链接
我漏掉了什么。为什么…
fmt.Printf("%T\n", a)
fmt.Printf("%T\n", b)
fmt.Printf("%T\n", c)
…会输出…
int
float64
string
…?
谢谢!
更多关于Golang Playground 示例:Lscyy3dKXLh 代码分享的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
有趣。"\n"是什么意思?
第一段非常有帮助。
第二段很有趣
非常有用!
它开始一条评论。
%T 表示变量的类型
a := 1 默认将 a 声明为 int 类型,而 b := 1.1 默认将 b 声明为 float64 类型
我有点理解但又不完全明白。 那么,当你说"默认"时,这是否意味着Go已经预设或预定义好的内容?
是的,这非常有帮助 学习 Go 教程 https://www.welookups.com/go/default.html
在"i := 42 // int"中,"//int"是对前面代码的注释吗?但不是程序的一部分?
i := 42 // int
“//” 是什么意思?
请多包涵,我就像个学说话的婴儿。 
正确。编译器会忽略以//开头的同一行中的所有内容,直到该行结束。
https://golang.org/ref/spec#Comments
我知道你刚开始学习,但我建议你尽快(这也适用于所有人)习惯查阅官方规范来获取确切答案。与其他语言相比,Go语言的规范出奇地易读!注释是所有编程语言中最简单的部分之一,因此这是一个很好的起点。
它代表"换行符"。简单来说,这意味着你的 fmt.Printf() 语句会输出:
int float64 string
而不是
intfloat64string
去掉 /n 试试看。😉
推荐阅读:http://www.golang-book.com/books/intro
或者如果你不介意花点钱,可以找O’Reilly出版的《Introducing Go》这本书。对于刚开始学习Go和编程的人来说,这是一本很好的入门书籍。
根据Go语言教程:
但当右侧包含无类型数值常量时,新变量的类型可能是int、float64或complex128,具体取决于常量的精度:
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
您可以在Playground(采用32位架构)上验证这一点,可以看到1.1是float64类型,1是int类型,而int的大小是4字节(32位):https://play.golang.org/p/zfxE6sauGnD
cherilexvold1974:
当你说"默认"时,这是否意味着预设或预定义的内容?
据我所知,这是一种约定俗成的规则,1 是 int 类型,1.1 是 float64 类型 - 可以在 Go 教程关于字面量数据类型的部分看到:Go 语言之旅
我不太确定的是,在 64 位机器上 h:= 1.1 是 float64 类型,在 32 位机器上是否会是 float32 类型。有人能帮忙解答这个问题吗?
这个输出结果是由Go语言中变量声明和初始化的类型推导机制决定的。让我分析一下代码中的变量声明:
package main
import "fmt"
func main() {
a := 42
b := 42.0
c := "42"
fmt.Printf("%T\n", a) // 输出: int
fmt.Printf("%T\n", b) // 输出: float64
fmt.Printf("%T\n", c) // 输出: string
}
类型推导规则解释:
a := 42- 当使用整数字面量(不带小数点)时,Go会推导为int类型b := 42.0- 当使用带小数点的字面量时,即使小数部分为0,Go也会推导为float64类型c := "42"- 使用双引号的字面量会被推导为string类型
这是Go语言编译器的标准行为。如果你想明确指定不同的数值类型,需要使用显式类型声明:
package main
import "fmt"
func main() {
// 显式类型声明示例
var a int32 = 42
var b float32 = 42.0
var c string = "42"
fmt.Printf("%T\n", a) // 输出: int32
fmt.Printf("%T\n", b) // 输出: float32
fmt.Printf("%T\n", c) // 输出: string
}
或者使用类型转换:
package main
import "fmt"
func main() {
a := int32(42)
b := float32(42.0)
c := "42"
fmt.Printf("%T\n", a) // 输出: int32
fmt.Printf("%T\n", b) // 输出: float32
fmt.Printf("%T\n", c) // 输出: string
}
代码的输出完全符合Go语言规范,没有任何遗漏或错误。

