English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 기본 강의

Golang 제어 문

Golang 함수 & 메서드

Golang 구조체

Golang 슬라이스 & 배열

Golang 문자열(String)

Golang 포인터

Golang 인터페이스

Golang 동기

Golang 예외(Error)

Golang 기타杂项

Go 언어 함수 파라미터

함수Golang은 특정 작업을 수행하고 호출자에게 결과를 반환하는 문장 집합입니다. 함수는 결과를 반환하지 않고 특정 작업을 수행할 수도 있습니다. Golang은 함수에 파라미터를 전달하는 두 가지 방식을 지원합니다.값 전달 또는 값 호출또는참조 전달 또는 참조 전달기본적으로 Golang은 함수에 파라미터를 전달할 때 값을 호출하는 방식을 사용합니다.

함수에 파라미터를 전달하는 기본 용어:

  • 함수에 전달되는 파라미터는 실제 파라미터라고 합니다.

  • 함수가 받는 파라미터는 형식 파라미터라고 합니다.

값 호출

이 파라미터 전달에서, 실제 파라미터의 값은 함수의 형식 파라미터에 복사되며, 두 가지 유형의 파라미터는 다른 저장 위치에 저장됩니다. 따라서 함수 내에서 수행된 모든 변경은 호출자의 실제 파라미터에 반영되지 않습니다.

예제1:아래 프로그램에서는 Z의 값이 Modify 함수를 통해 변경되지 않는 것을 볼 수 있습니다.변경

package main
import "fmt"
// 값 변경
func modify(Z int) {
    Z = 70
}
func main() {
    var Z int = 10
    fmt.Printf("함수 호출 전, Z의 값은 = %d", Z)
    //값 호출
    modify(Z)
    fmt.Printf("\n함수 호출 후, Z의 값은 = %d", Z)
}

출력:

함수 호출 전, Z의 값은 = 10
함수 호출 후 Z의 값은 = 10

예제2:아래 프로그램에서는 값을 교환할 수 없습니다. 왜냐하면 값을 호출하는 호출입니다.

package main
import "fmt"
//값을 교환하는 함수
func swap(x, y int) int {
    //임시 변수를 가져옵니다
    var tmp int
    tmp = x
    x = y
    y = tmp
    return tmp
}
func main() {
    var f int = 700
    var s int = 900
    fmt.Printf("함수 호출 전의 값\n")
    fmt.Printf("f = %d and s = %d\n", f, s)
    swap(f, s)
    fmt.Printf("\n함수 호출 후의 값\n")
    fmt.Printf("f = %d and s = %d", f, s)
}

출력:

함수 호출 전의 값
f = = 700 and s = 900
함수 호출 후의 값
f = = 700 and s = 900

참조 호출을 사용합니다

여기서는포인터(지시자)의 개념. 풀참조 연산자*주소를 가리키는 연산자&를 사용하여 얻을 수 있습니다. 실제 매개변수와 형식 매개변수는 동일한 위치를 가리키며, 따라서 함수 내에서 이루어지는 모든 변경은 호출자의 실제 매개변수에 반영됩니다.

예제1:함수 호출 중, 변수의 주소를 전달하고, 풀참조 연산자를 사용하여*값을 변경합니다. 따라서 함수 내에서의 모든 변경은 호출자의 실제 매개변수에 반영됩니다.Modify 이후변경된 값을 찾을 수 있습니다.

package main
import "fmt"
// 값을 변경하는 함수
func modifydata(Z *int) {
    *Z = 70
}
func main() {
    var Zz int = 10
    fmt.Printf("함수 호출 전 Zz의 값은 = %d", Zz)
    //Z의 주소를 참조 호출로 전달
    modifydata(&Zz)
    fmt.Printf("\n함수 호출 후 Zz의 값은 = %d", Zz)
}

출력:

함수 호출 전 Zz의 값은 = 10
함수 호출 후 Zz의 값은 = 70

예제2:참조 호출을 사용하여 값을 교환할 수 있습니다. 예를 들어.

package main
import "fmt"
//값을 교환하는 함수,정수를 가리키는 포인터
func swap(x, y *int) int {
    //임시 저장 변수
    var tmp int
    tmp = *x
    *x = *y
    *y = tmp
    return tmp
}
func main() {
    var f int = 700
    var s int = 900
    fmt.Printf("함수 호출 전의 값\n")
    fmt.Printf("f = %d 과 s = %d\n", f, s)
    //참조 호출을 통해
    //변수 주소 전달
    swap(&f, &s)
    fmt.Printf("\n함수 호출 후의 값\n")
    fmt.Printf("f = %d 과 s = %d", f, s)
}

출력:

함수 호출 전의 값
f = = 700 과 s = 900
함수 호출 후의 값
f = = 900 과 s = 700