golang에서 주소를 얻을 수 없는 문제 분석

王林
풀어 주다: 2019-12-24 16:46:12
원래의
3665명이 탐색했습니다.

golang에서 주소를 얻을 수 없는 문제 분석

코드 예제는 다음과 같습니다.

func main() {
    var a Integer = 1
    var b Integer = 1
    sum := a.Add(b)
    fmt.Println(sum)

    var i interface{} = a
    sum = i.(Integer).Add(b) // 报错
    fmt.Println(sum)
}

type Integer int

func (a *Integer) Add(b Integer) Integer {
    return  *a + b
}
로그인 후 복사

오류 메시지는 다음과 같습니다.

test\testVar.go:16:19: cannot call pointer method on i.(Integer)
test\testVar.go:16:19: cannot take the address of i.(Integer)
로그인 후 복사

이는 Add 메서드에 Integer 포인터 유형의 수신기가 필요하고 i.(Integer)<가 필요하기 때문에 발생합니다. 우리가 전달한 /code>는 값이고, 이 값은 어떤 변수에도 할당되지 않으므로 "&" 기호는 주소를 얻을 수 없습니다. <code>i.(Integer)是个值,且这个值也没有赋给任何变量,所以符号“&”是获取不到地址的。

正确的方式是将i.(Integer)

올바른 방법은 i.(Integer)를 변수에 할당하거나 메소드 수신자를 일반 유형으로 변경하는 것입니다.

코드 예시는 다음과 같습니다:

   var i interface{} = a
    c := i.(Integer)
    sum = c.Add(b)
    fmt.Println(sum)
로그인 후 복사

또는

func (a Integer) Add(b Integer) Integer {    
return  a + b
}
로그인 후 복사
추천 관련 기사 및 튜토리얼: golang tutorial🎜

위 내용은 golang에서 주소를 얻을 수 없는 문제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿