现在正在尝试学习GoLang,其中一项任务有问题。问题是我需要为具有弹药和力量字段的结构定义射击方法。然而,它射杀了我,而不是想象中的敌人,错误如下:
compiler.go:64:20:testStruct。射击未定义(类型*英雄没有场地或方法射击)
我检查了一些文档和教程,似乎我很好地声明了这个方法。然而,我得到了这个错误。这是我的代码:
Ð ÑамкаÑ
ÑÑого ÑÑока Ð¼Ñ Ð¿Ð¾ÑÑаÑалиÑÑ Ð¿ÑедÑÑавиÑÑ Ñебе Ñже пÑивÑÑнÑе нам пеÑеменнÑе и ÑÑнкÑии, как обÑекÑÑ Ð¸Ð· ÑеалÑной жизни. ЧÑÐ¾Ð±Ñ Ð·Ð°ÐºÑепиÑÑ ÑезÑлÑÑÐ°Ñ Ð¼Ñ Ð¿Ñедлагаем вам неболÑÑÑÑ ÑвоÑÑеÑкÑÑ Ð·Ð°Ð´Ð°ÑÑ.
Ðам необÑ
одимо ÑеализоваÑÑ ÑÑÑÑкÑÑÑÑ Ñо ÑвойÑÑвами-полÑми On, Ammo и Power, Ñ Ñипами bool, int, int ÑооÑвеÑÑÑвенно. У ÑÑой ÑÑÑÑкÑÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¼ÐµÑодÑ: Shoot и RideBike, коÑоÑÑе не пÑинимаÑÑ Ð°ÑгÑменÑов, но возвÑаÑаÑÑ Ð·Ð½Ð°Ñение bool.
ÐÑли знаÑение On == false, Ñо оба меÑода веÑнÑÑ false.
ÐелаÑÑ Shoot можно ÑолÑко пÑи налиÑии Ammo (Ñогда Ammo ÑменÑÑаеÑÑÑ Ð½Ð° единиÑÑ, а меÑод возвÑаÑÐ°ÐµÑ true), еÑли его неÑ, Ñо меÑод веÑÐ½ÐµÑ false. ÐеÑод RideBike ÑабоÑÐ°ÐµÑ Ñакже, но ÑолÑко завиÑÐ¸Ñ Ð¾Ñ ÑвойÑÑва Power.
ЧÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ, ÑÑо Ð²Ñ Ð²Ñе Ñделали пÑавилÑно, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоздаÑÑ ÑказаÑÐµÐ»Ñ Ð½Ð°Â ÑкземплÑÑ ÑÑой ÑÑÑÑкÑÑÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ testStruct в ÑÑнкÑии main, в далÑнейÑем пÑогÑамма пÑовеÑÐ¸Ñ ÑезÑлÑÑаÑ.
ÐакÑÑваÑÑÐ°Ñ ÑигÑÑÐ½Ð°Ñ Ñкобка в конÑе main() вам не видна, но она еÑÑÑ.
ÐÐ°ÐºÐµÑ main обÑÑвлÑÑÑ Ð½Ðµ нÑжно!
УдаÑи!
#code tpl:
func main() {
// testStruct :=
/*
* ÐкземплÑÑ Ñозданной вами ÑÑÑÑкÑÑÑÑ Ð½ÐµÐ¾Ð±Ñ
одимо пеÑедаÑÑ Ð² каÑеÑÑве
* аÑгÑменÑа ÑÑнкÑии testStruct, коÑоÑÐ°Ñ Ð²ÑÐ¿Ð¾Ð»Ð½Ð¸Ñ Ð¿ÑовеÑÐºÑ ÑоблÑдениÑ
* вÑеÑ
ÑÑловий заданиÑ/
// }
*/
package main
import (
"fmt"
)
type Hero struct {
On bool
Ammo, Power int
}
func Shoot(h Hero) bool {
if !h.On { return false }
if h.Ammo>0 {
h.Ammo--
return true
} else {
return false
}
}
func RideBike(h Hero) bool {
if !h.On { return false }
if h.Power>0 {
h.Power--
return true
} else {
return false
}
}
func main() {
testStruct := new(Hero)
testStruct.On = true
testStruct.Ammo = 10
testStruct.Power = 100
fmt.Println (testStruct)
res := testStruct.Shoot()
fmt.Println (testStruct)
}```
Could you please tell me what I am doing wrong? Thank you! Sorry for my English -it's bot my bative language. Thank you again!