http://openmymind.net/Things-I-Wish-Someone-Had-Told-Me-About-Go/
试图让我的头脑围绕 Go,仍然很新。我知道 C 中的引用和指针,但我似乎无法在 Go 中使用它。我已经阅读了许多关于这个问题的文章,但仍然没有真正理解和实施解决方案。
角色有健康和攻击点。
字符可以 Attack()。
战斗回合调用 Attack() ,角色可以在本回合攻击。
意图,当对角色调用 Attack() 时,另一个角色的生命值会改变。
目前,角色的健康永远不会改变。
有人能给我一个简洁的例子,说明如何以正确的方式更改对象上的值吗?
package main
import (
"fmt"
"math/rand"
"time"
)
//Character health + atk of
type Character struct {
Health, Atk int
}
//Attack ... Character can Attack
func (c *Character) Attack(health, atk int) {
health -= atk
}
//CharacterInterface ... methods for characters
type CharacterInterface interface {
Attack(health, atk int)
}
func combatRound(p, e Character) {
whoAtks := rand.Intn(100)
if whoAtks > 30 {
p.Attack(e.Health, p.Atk)
fmt.Println(p.Health)
} else {
e.Attack(p.Health, e.Atk)
fmt.Println(p.Health)
}
}
func main() {
//seed rand generator for the current run
rand.Seed(time.Now().UTC().UnixNano())
p := Character{20, 5}
e := Character{20, 5}
combatRound(p, e)
fmt.Println("Player Health: %d \n Enemy Health: %d", p.Health, e.Health)
}
MMTTMM
相关分类