Go语言游戏后端开发9:Go语言中的结构体
第9课我们来学习Go语言中的结构体(struct)。结构体在游戏开发里就像是一个“数据大礼包”,能把不同类型的数据组合在一起,方便管理和使用。
结构体的定义与使用
package mainimport "fmt"// 定义一个表示游戏角色的结构体
type Character struct {Name string Level int //等级HP int //生命值Attack int //攻击力
}func main() {// 创建一个角色实例hero := Character{Name: "战士leicw",Level: 10,HP: 100,Attack: 20,}fmt.Printf("角色名称:%s,等级:%d,生命值:%d,攻击力:%d\n", hero.Name, hero.Level, hero.HP, hero.Attack)
}
将以上代码写入main.go,运行结果如下:
leicw@Code AI世界:code009$ go run main.go
角色名称:战士leicw,等级:10,生命值:100,攻击力:20
在这段代码中,我们使用 type
关键字定义了一个名为 Character
的结构体。结构体内部包含了 Name
(字符串类型)、Level
(整数类型)、HP
(整数类型)和 Attack
(整数类型) 四个字段,分别表示角色的名称、等级、生命值和攻击力。
在 main
函数里,我们通过 Character{}
的方式创建了一个名为 hero
的角色实例,并为每个字段赋值。最后使用 fmt.Printf
打印出角色的各项属性。
结构体指针
和普通变量一样,结构体也可以使用指针。使用结构体指针可以在函数间高效传递结构体数据,避免大量数据的拷贝。
package mainimport "fmt"type Character struct {Name stringLevel intHP intAttack int
}// 定义一个函数,通过结构体指针修改角色的生命值
func heal(character *Character, amount int) {character.HP += amount
}func main() {hero := Character{Name: "战士leicw",Level: 10,HP: 100,Attack: 20,}fmt.Printf("治疗前生命值:%d\n", hero.HP)heal(&hero, 50)fmt.Printf("治疗后生命值:%d\n", hero.HP)
}
将以上代码写入main.go,运行结果如下:
leicw@Code AI世界:code009$ go run main.go
治疗前生命值:100
治疗后生命值:150
这里定义了一个 heal
函数,它接受一个 Character
类型的指针和一个整数 amount
。在函数内部,通过指针直接修改了角色的生命值。在 main
函数里,我们先打印了治疗前的生命值,然后调用 heal
函数并传入角色的指针和治疗量,最后打印治疗后的生命值。
在游戏开发中,结构体可以用来表示各种游戏对象,比如怪物、道具等,每个对象都有不同的属性。通过结构体和结构体指针,能让我们更方便地管理和操作这些游戏对象的数据。
你可以试着给 Character
结构体添加更多字段,比如防御力、魔法值等,然后修改相关函数和代码来使用这些新字段。多尝试不同的操作,对结构体的理解会更深刻。要是遇到什么问题,欢迎评论区留言。点击下方微信公众号扫码关注我,解锁更多精彩内容。