Golang Go语言中 各位大佬,有没有更好的给 struct 初始化值的方式
Golang Go语言中 各位大佬,有没有更好的给 struct 初始化值的方式
我之前一直接触的都是面向对象的编程语言,突然到 Golang 还有点不习惯,我这种方式 OK 不,我的想法是创建一个“类”的对象,但是 stuct 本身我没有找到初始化值的更好的方式
type GameStart struct{
cloudNumber int
gameStartLayers [8]*ebiten.Image
layerPosition [8][2]float64
menuList [3]*Menu
}
func (g *GameStart) Init(){
g.cloudNumber = 3
g.layerPosition = [8][2]float64{
{0, 0}, {0, 0}, {0, 230}, {0, 250},
{0, 250}, {0, 0}, {0, 0}, {0, 0},
}
}
func main(){
var gameStart *GameStart = new(GameStart)
gameStart.Init()
}
更多关于Golang Go语言中 各位大佬,有没有更好的给 struct 初始化值的方式的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
写一个普通函数,返回一个结构体啊
更多关于Golang Go语言中 各位大佬,有没有更好的给 struct 初始化值的方式的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
func NewGameStart() *GameStart
好吧,似乎很多人都是这么做的,我就是想看看有没有更加面向对象编程的方式
好吧,都是这种方式,感觉好难习惯
直接赋值
var gameStart = &GameStart{
cloudNumber: 3,
layerPosition: [8][2]float64{
{0, 0}, {0, 0}, {0, 230}, {0, 250},
{0, 250}, {0, 0}, {0, 0}, {0, 0},
},
}
即可,其实不需要搞函数的
正式的代码非常多,我是想尽量保持入口代码简洁,只要干净的调用对象,各个代码文件之间没有耦合,有些就是需要默认的类似于类初始化变量的一些值,可能是我编程习惯不一样吧。。。
好吧😂,突然发现脱离面向对象就不会写代码了
pool 优化里也可以把那个 initedGameStart 去掉,*v = initedGameStart 就换成普通的赋值,或者放在 pool.Get 的 New 里,不需要每次都初始化这个 LayerPosition 字段,取决于实际需要
不是所有语言都是面向对象,比如 go 和 js,适应就好
我决定了,既然你们都这么说
看来要给大脑升级一下了,话说我 Node 也写过了,es6 语法,一直都是当面向对象写的,也有类,也有 new
好奇,你们所谓的“面向对象”语言如何优雅地初始化?有没有代码贴一下?
在Golang中,为struct初始化值有多种方式,选择哪种方式通常取决于具体的需求和代码的可读性。以下是几种常见且推荐的方法:
-
直接赋值:这是最直接的方法,适用于字段较少且明确知道要赋值的场景。
type Person struct { Name string Age int } p := Person{Name: "Alice", Age: 30}
-
字段顺序初始化(仅当字段顺序与声明顺序一致时):
p := Person{"Alice", 30}
-
使用构造函数:对于更复杂的struct,可以通过定义一个函数来初始化,这有助于封装初始化逻辑和增加灵活性。
func NewPerson(name string, age int) Person { return Person{Name: name, Age: age} } p := NewPerson("Alice", 30)
-
使用指针和默认值:对于可选字段,可以使用指针和零值来实现更灵活的初始化。
type Person struct { Name *string Age *int } name := "Alice" age := 30 p := Person{Name: &name, Age: &age}
选择哪种方式主要取决于struct的复杂度、代码的可读性和维护性。在大多数情况下,直接赋值和构造函数是两种最常见且推荐的方法。希望这些建议对你有帮助!