package main import "fmt" type character struct { name string hp int maxHP int } func newCharacter(name string, hp int) *character { return &character{name: name, hp: hp, maxHP: hp} } func (c *character) takeDamage(amount int) { c.hp = c.hp - amount if c.hp < 0 { c.hp = 0 } } func (c *character) heal(amount int) { c.hp = c.hp + amount if c.hp > c.maxHP { c.hp = c.maxHP } } func (c *character) isAlive() bool { return c.hp > 0 } func (c *character) report() { fmt.Printf("%s: %d / %d HP (alive: %v)\n", c.name, c.hp, c.maxHP, c.isAlive()) } func main() { keiko := newCharacter("Keiko", 100) keiko.report() keiko.takeDamage(30) keiko.report() keiko.takeDamage(80) keiko.report() keiko.heal(20) keiko.report() }