>백엔드 개발 >Golang >GoLang 구조 메서드를 호출할 때 이상한 오류가 발생합니다.

GoLang 구조 메서드를 호출할 때 이상한 오류가 발생합니다.

WBOY
WBOY앞으로
2024-02-08 22:21:191221검색

GoLang 结构体方法调用出现奇怪错误

php 편집기 Youzi는 GoLang 프로그래밍 언어를 사용할 때 이상한 오류가 발생할 수 있습니다. 그 중 하나는 구조 메서드 호출의 문제입니다. 구조는 필드와 메소드를 포함할 수 있는 GoLang의 일반적인 데이터 유형입니다. 그러나 때때로 구조체 메서드를 호출할 때 예상치 못한 오류가 발생하는 경우가 있습니다. 이 기사에서는 이러한 문제의 원인을 분석하고 GoLang의 구조를 더 잘 이해하고 사용할 수 있도록 솔루션을 제공합니다.

질문 내용

지금 GoLang을 배우려고 하는데 작업 중 하나에 문제가 발생했습니다. 문제는 Power 및 Shoot 필드가 있는 구조체에 대해 Ammo 메서드를 정의해야 한다는 것입니다. 그러나 가상의 적이 아닌 나를 향해 총을 쏘고 다음과 같은 오류가 발생합니다. compiler.go:64:20: testStruct.Shoot가 정의되지 않았습니다(*Hero 유형에는 필드 또는 메소드 Shoot가 없음). 문서와 일부 튜토리얼을 확인한 결과 메서드를 훌륭하게 선언한 것 같습니다. 하지만 이 오류가 발생합니다. 내 코드는 다음과 같습니다.

В рамках этого урока мы постарались представить себе уже привычные нам переменные и функции, как объекты из реальной жизни. Чтобы закрепить результат мы предлагаем вам небольшую творческую задачу.

Вам необходимо реализовать структуру со свойствами-полями 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!

Solution

함수 매개변수와 수신자에 대해 혼동하고 계십니다. 다음을 시도해 보세요. Hero가 함수의 어디에 있는지 확인하세요.

으아악

위 내용은 GoLang 구조 메서드를 호출할 때 이상한 오류가 발생합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제