>  기사  >  백엔드 개발  >  golang의 가변 매개변수 함수

golang의 가변 매개변수 함수

王林
王林앞으로
2024-02-12 15:42:06535검색

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으로 문의하시기 바랍니다. 삭제