golang의 가변 매개변수 함수

王林
풀어 주다: 2024-02-12 15:42:06
앞으로
534명이 탐색했습니다.

golang의 가변 매개변수 함수

질문 내용

package main

import (
    "fmt"
)

type isum interface {
    sum() int
}

type sumimpl struct {
    num int
}

func (s sumimpl) sum() int {
    return s.num
}

func main() {

    nums := []int{1, 2}
    variadicexample1(nums...)

    impl1 := sumimpl{num: 1}
    impl2 := sumimpl{num: 2}

    variadicexample2(impl1, impl2)

    impls := []sumimpl{
        {
            num: 1,
        },
        {
            num: 2,
        },
    }
    variadicexample2(impls...)
}

func variadicexample1(nums ...int) {
    fmt.print(nums, " ")
    total := 0
    for _, num := range nums {
        total += num
    }
    fmt.println(total)
}

func variadicexample2(nums ...isum) {

    fmt.print(nums, " ")
    total := 0
    for _, num := range nums {
        total += num.sum()
    }
    fmt.println(total)
}
로그인 후 복사

Go 언어에서 변수 함수를 사용할 때 문제가 발생했습니다.

인터페이스를 구현하는 구조체를 인자로 전달할 때 별도의 선언이 가능하지만... 을 통해 전달할 때 왜 이것이 불가능한지 알려주실 수 있나요?

아래 코드에 오류가 있습니다.

으아악

이 글을 읽었습니다

golang의 가변 함수에 인터페이스 매개변수를 전달하는 방법은 무엇입니까?

으아악

위 코드가 괜찮은 것으로 확인되었습니다.

솔루션

sumimpl 切片不是 isum 切片。一个是结构体切片,另一个是接口切片。这就是为什么您无法将其传递给需要 []isum 的函数(即 ...isum).

하지만 이렇게 할 수 있습니다:

으아악

위 내용은 golang의 가변 매개변수 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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