>백엔드 개발 >Golang >Go 언어에서 무한 매개변수란 무엇인가요?

Go 언어에서 무한 매개변수란 무엇인가요?

青灯夜游
青灯夜游원래의
2023-01-17 15:33:552166검색

무한 매개변수는 함수에 의해 전달된 매개변수의 수가 무한하다는 것을 의미합니다. 무한 매개변수 선언은 "param...type" 구문 형식을 사용합니다. 무기한 매개변수의 특징: 1. 모든 무기한 매개변수 유형은 동일해야 합니다. 2. 무기한 매개변수는 함수의 마지막 매개변수여야 합니다. 3. 무기한 매개변수는 함수 본문의 슬라이스와 동일하며, 슬라이스는 무한 매개변수 연산에도 적합합니다. 4. 슬라이스는 무한 매개변수에 매개변수로 전달될 수 있으며, 슬라이스 이름 뒤에 "..."를 추가해야 합니다. 5. 형식 매개변수가 무한 매개변수인 함수의 유형은 다릅니다. 형식 매개변수가 슬라이스인 함수의 함수와 다릅니다.

Go 언어에서 무한 매개변수란 무엇인가요?

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

무한 매개변수란 무엇인가요?

무한 매개변수는 함수에 의해 전달된 매개변수의 수가 무한하다는 것을 의미합니다.

package main

import (
    "fmt"
)

/*
不定参数函数
*/
func Add(a int, args ...int) (result int) {
    result += a
    for _, arg := range args {
        result += arg
    }
    return
}

func main() {
    fmt.Println(Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
}

Go 함수는 무한한 수의 형식 매개변수를 지원합니다. 가변 매개변수 선언은 param...type의 구문 형식을 사용합니다.param ...type的语法格式

不定参数有以下几个特点:

  • ①所有的不定参数类型必须是相同的。

  • ②不定参数必须是函数的最后一个参数。

  • ③不定参数在函数体内相当于一个切片,对切片的操作同样适合对不定参数的操作。

  • ④切片也可以作为参数传递给不定参数,切片名称后面要加上“...

    무한 매개변수는 다음과 같은 특징을 갖습니다.
  • ①모든 부정 매개변수 유형이 동일해야 합니다.

②부정 매개변수는 함수의 마지막 매개변수여야 합니다.

Go 언어에서 무한 매개변수란 무엇인가요?

③부정 매개변수는 함수 본문의 슬라이스와 동일하며, 슬라이스에 대한 연산도 부정 매개변수에 대한 연산에 적합합니다. 4슬라이스를 부정 매개변수에 매개변수로 전달할 수도 있으며, 슬라이스 이름 뒤에 "..."를 추가해야 합니다.

package main

import "fmt"

func Add(arr ...int) int {
	var count int
	arr1 := arr[1:]
	for _, val := range arr1 {
		count += val
	}
	return count
}

func main() {
	slice := []int{1, 2, 3, 4, 5}
	//array := [...]int{1, 2, 3, 4}
	fmt.Println(Add(slice...))
	//fmt.Println(Add(array...))  //cannot use array (variable of type [4]int) as parameter of type []int
}
⑤ 형식 매개변수가 부정 매개변수인 함수는 형식 매개변수가 슬라이스인 함수와 유형이 다릅니다.

package main

import "fmt"

func Add1(arr ...int) int {
	return arr[0]
}

func Add2(arr []int) int {
	return arr[0]
}

func main() {
	fmt.Printf("%T\n", Add1)
	fmt.Printf("%T\n", Add2)
}

🎜🎜무한 매개변수 전송🎜🎜🎜
func SetData(args ...int) (result int) {
    //不定参数的传递
    return Add(1, args...)
}
func main() {
    fmt.Println(SetData(1, 2, 3))//输出7
    array := []int{1, 2, 3, 4}
    fmt.Println(Add(1, array...))//输出11
}
🎜🎜🎜모든 유형의 무한 매개변수🎜🎜🎜
/*
任意类型的不定参数,用interface{}表示
*/

func MyPrintf(args ...interface{}) {
    for _, arg := range args { //迭代不定参数
        switch arg.(type) {
        case int:
            fmt.Println(arg, "is int")
        case string:
            fmt.Println(arg, "is string")
        case float64:
            fmt.Println(arg, "is float64")
        case bool:
            fmt.Println(arg, " is bool")
        default:
            fmt.Println("未知的类型")
        }
    }
}

func main() {
    /*输出结果:
                12 is int
                haha is string
                12.5 is float64
                false  is bool
                -12.5 is float64
    */
    MyPrintf(12, "haha", 12.5, false, -12.5)
}
🎜[관련 권장 사항: 🎜Go 비디오 튜토리얼🎜, 🎜프로그램 밍이 가르치는 🎜】🎜

위 내용은 Go 언어에서 무한 매개변수란 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.