수색…
소개
Go의 함수는 일련의 작업을 수행하기 위해 체계적이고 재사용 가능한 코드를 제공합니다. 함수는 코딩 프로세스를 단순화하고 중복 논리를 방지하며 코드를 쉽게 따르도록합니다. 이 항목에서는 Go의 함수, 인수, 매개 변수, return 문 및 범위의 선언 및 사용에 대해 설명합니다.
통사론
- func () // 인수가없고 반환 값이없는 함수 유형
- func (x int) int // 정수를 받아들이고 정수를 반환합니다.
- func (a, b int, z float32) bool // 정수 2 개를 허용하고 하나는 float로 부울을 반환합니다.
- func (접두어 문자열, 값 ... int) // 하나의 문자열과 하나 이상의 정수를 허용하는 "가변적"함수
- func () (int, bool) // 두 값을 반환하는 함수
- func (a, b int, z float64, opt ... interface {}) (성공 성공 bool) // float와 하나 이상의 float 및 하나 이상의 인터페이스 수를 허용하고 부울 값을 반환합니다 (이미 함수 내부에서 초기화 됨). )
기본 선언
매개 변수를 허용하지 않고 값을 반환하지 않는 간단한 함수입니다.
func SayHello() {
fmt.Println("Hello!")
}
매개 변수
함수는 선택적으로 매개 변수 집합을 선언 할 수 있습니다.
func SayHelloToMe(firstName, lastName string, age int) {
fmt.Printf("Hello, %s %s!\n", firstName, lastName)
fmt.Printf("You are %d", age)
}
firstName
의 유형은 lastName
과 동일하므로 생략되었습니다.
반환 값
함수는 하나 이상의 값을 호출자에게 반환 할 수 있습니다.
func AddAndMultiply(a, b int) (int, int) {
return a+b, a*b
}
두 번째 반환 값은 var 일 수도 있습니다.
import errors
func Divide(dividend, divisor int) (int, error) {
if divisor == 0 {
return 0, errors.New("Division by zero forbidden")
}
return dividend / divisor, nil
}
중요한 두 가지 사항을 언급해야합니다.
- 괄호는 단일 반환 값에 대해 생략 될 수 있습니다.
- 각
return
문은 선언 된 모든 반환 값에 대한 값을 제공해야합니다.
명명 된 반환 값
반환 값은 로컬 변수에 할당 할 수 있습니다. 그런 다음 빈 return
문을 사용하여 현재 값을 반환 할 수 있습니다. 이것은 "알몸" 반환 으로 알려져 있습니다. Naked return 문은 더 긴 함수에서 가독성을 해치기 때문에 짧은 함수에서만 사용해야합니다.
func Inverse(v float32) (reciprocal float32) {
if v == 0 {
return
}
reciprocal = 1 / v
return
}
//A function can also return multiple values
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
중요한 두 가지 사항을 언급해야합니다.
- 반환 값 주변의 괄호는 필수 항목 입니다.
- 빈
return
문을 항상 제공해야합니다.
리터럴 함수 및 클로저
간단한 리터럴 함수, 인쇄 Hello!
stdout :
package main
import "fmt"
func main() {
func(){
fmt.Println("Hello!")
}()
}
str
인자를 stdout에 출력하는 리터럴 함수 :
package main
import "fmt"
func main() {
func(str string) {
fmt.Println(str)
}("Hello!")
}
변수 str
닫는 리터럴 함수 :
package main
import "fmt"
func main() {
str := "Hello!"
func() {
fmt.Println(str)
}()
}
리터럴 함수를 변수에 할당 할 수 있습니다.
package main
import (
"fmt"
)
func main() {
str := "Hello!"
anon := func() {
fmt.Println(str)
}
anon()
}
가변 인자 함수
variadic 함수는 임의의 개수의 후행 인수로 호출 할 수 있습니다. 이러한 요소는 슬라이스에 저장됩니다.
package main
import "fmt"
func variadic(strs ...string) {
// strs is a slice of string
for i, str := range strs {
fmt.Printf("%d: %s\n", i, str)
}
}
func main() {
variadic("Hello", "Goodbye")
variadic("Str1", "Str2", "Str3")
}
또한 variadic 함수에 슬라이스를 줄 수 있습니다. ...
:
func main() {
strs := []string {"Str1", "Str2", "Str3"}
variadic(strs...)
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow