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

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

WBOY
풀어 주다: 2024-02-08 22:21:19
앞으로
1228명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿