英文:
Go: Why are structs "instantiated" differently from other types?
问题
在Go语言中,结构体的实例化与“常规”类型有所不同:
如果是常规类型:MyFloat(2)
如果是结构体:MyFloat{2}
这样设计的原因是什么?
package main
import (
"fmt"
)
type MyFloat float64
type MyFloat2 struct {
X float64
}
func main() {
f1 := MyFloat(2)
f2 := MyFloat2{3}
fmt.Println(f1)
fmt.Println(f2)
}
英文:
In golang, structs are instantiated differently from "regular" types:
If it's a regular type: MyFloat(2)
If it's a struct: MyFloat{2}
Is there a particular reason for this?
package main
import (
"fmt"
)
type MyFloat float64
type MyFloat2 struct {
X float64
}
func main() {
f1 := MyFloat(2)
f2 := MyFloat2{3}
fmt.Println(f1)
fmt.Println(f2)
}
答案1
得分: 3
MyFloat(2)
是一个类型转换。MyFloat2{3}
是一个复合字面量。
类型转换可以用于结构体:
var f3 struct {
X float64
}
f4 := MyFloat2(f3)
英文:
MyFloat(2)
is a conversion. MyFloat2{3}
is a composite literal.
Conversions can be used on structs:
var f3 struct {
X float64
}
f4 := MyFloat2(f3)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论