>  기사  >  백엔드 개발  >  Go 언어에서 함수를 호출하는 방법은 무엇입니까?

Go 언어에서 함수를 호출하는 방법은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-12-01 19:32:006791검색

Go 언어에서는 함수를 정의한 후 "함수명()"을 통해 함수를 호출할 수 있으며, 구문은 "반환값 변수 목록 = 함수명(매개변수 목록)"입니다. "()"에 여러 매개변수가 포함된 경우 매개변수 변수는 쉼표로 구분되며 "반환 값 변수 목록"에서 세미콜론으로 끝날 필요가 없으며 여러 반환 값은 쉼표로 구분됩니다.

Go 언어에서 함수를 호출하는 방법은 무엇입니까?

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

함수는 코드 실행의 논리적 구조를 구성합니다. Go 언어에서 함수의 기본 구성 요소는 키워드 func, 함수 이름, 매개변수 목록, 반환 값, 함수 본문 및 반환 문입니다. 코드.

Go 언어는 컴파일된 언어이기 때문에 함수를 작성하는 순서는 상관이 없습니다. 가독성을 고려하여 파일 앞에 main() 함수를 작성하는 것이 가장 좋으며, 그 외의 함수는 그 안에 작성하는 것이 좋습니다. 특정 논리적 순서(예: 함수가 호출되는 순서)

여러 함수를 작성하는 주된 목적은 많은 코드 줄이 필요한 복잡한 문제를 일련의 간단한 작업으로 분해하여 해결하는 것입니다. 또한 동일한 작업(함수)을 여러 번 호출할 수 있으므로 코드 재사용에 도움이 됩니다(사실 무엇보다 좋은 프로그램은 DRY 원칙, 즉 특정 작업을 수행하는 코드가 프로그램에서 한 번만 나타날 수 있다는 것을 의미하는 Don't Repeat Yourself(Don't Repeat Yourself)에 크게 주목합니다.

코드 블록의 마지막 줄에 도달하거나 } return 문 앞에 도달하면 함수가 종료됩니다. return 문에는 0개 이상의 매개 변수가 있을 수 있으며 이러한 매개 변수는 호출자에 대한 반환 값으로 사용됩니다. 문은 for의 무한 루프를 종료하거나 고루틴을 종료하는 데에도 사용할 수 있습니다.

Go 언어에는 세 가지 유형의 함수가 있습니다.

  • 이름이 있는 일반 함수
  • 익명 함수 또는 람다 함수
  • 메서드

일반 함수 선언(정의)

함수 선언에는 함수 이름, 공식 포함 매개변수 목록, 반환값 목록(생략 가능), 함수 본문.

func 函数名(形式参数列表)(返回值列表){
    函数体
}

정식 매개변수 목록은 함수의 매개변수 이름과 매개변수 유형을 설명하며, 해당 매개변수는 매개변수 호출자가 제공하는 값입니다. 함수가 이름이 지정되지 않은 변수를 반환하는 경우 또는 반환 값이 없으며 반환 값 목록에서 괄호를 생략할 수 있습니다.

함수 호출

함수를 호출하면 현재 코드가 호출된 함수로 점프하여 호출할 수 있으며 호출 전 함수의 지역 변수는 함수 이후에도 손실되지 않습니다. 실행이 끝나면 호출 함수의 다음 줄에서 코드 실행이 다시 시작되며 이전 지역 변수에도 계속 액세스할 수 있습니다.

함수 내의 지역 변수는 함수 본문에서만 사용할 수 있습니다. 함수 호출이 완료된 후에는 해당 지역 변수가 해제되고 유효하지 않습니다.

Go 언어의 함수 호출 형식은 다음과 같습니다.

返回值变量列表 := 函数名(参数列表)

다음은 각 부분에 대한 설명입니다.

  • 함수 이름: 호출해야 하는 함수의 이름입니다.
  • 매개변수 목록: 매개변수 변수는 쉼표로 구분되며 세미콜론으로 끝날 필요가 없습니다.
  • 반환 값 변수 목록: 여러 반환 값은 쉼표로 구분됩니다.

예를 들어 덧셈 함수 호출 스타일은 다음과 같습니다.

result := add(1,1)

함수의 반환 값

Go 언어는 여러 반환 값을 지원하므로 함수 실행 후 여러 반환 매개 변수를 쉽게 얻을 수 있습니다. Go 언어는 다중을 사용하는 경우가 많습니다. 반환 값의 마지막 반환 매개 변수는 함수 실행 중에 발생할 수 있는 오류를 반환합니다. 샘플 코드는 다음과 같습니다.

conn, err := connectToNetwork()

在这段代码中,connectToNetwork 返回两个参数,conn 表示连接对象,err 返回错误信息。

其它编程语言中函数的返回值

  • C/C++ 语言中只支持一个返回值,在需要返回多个数值时,则需要使用结构体返回结果,或者在参数中使用指针变量,然后在函数内部修改外部传入的变量值,实现返回计算结果,C++ 语言中为了安全性,建议在参数返回数据时使用“引用”替代指针。
  • C# 语言也没有多返回值特性,C# 语言后期加入的 ref 和 out 关键字能够通过函数的调用参数获得函数体中修改的数据。
  • lua 语言没有指针,但支持多返回值,在大块数据使用时方便很多。

Go语言既支持安全指针,也支持多返回值,因此在使用函数进行逻辑编写时更为方便。

1) 同一种类型返回值

如果返回值是同一种类型,则用括号将多个返回值类型括起来,用逗号分隔每个返回值的类型。

使用 return 语句返回时,值列表的顺序需要与函数声明的返回值类型一致,示例代码如下:

func typedTwoValues() (int, int) {
    return 1, 2
}
func main() {
    a, b := typedTwoValues()
    fmt.Println(a, b)
}

代码输出结果:

1 2

纯类型的返回值对于代码可读性不是很友好,特别是在同类型的返回值出现时,无法区分每个返回参数的意义。

2) 带有变量名的返回值

Go语言支持对返回值进行命名,这样返回值就和参数一样拥有参数变量名和类型。

命名的返回值变量的默认值为类型的默认值,即数值为 0,字符串为空字符串,布尔为 false、指针为 nil 等。

下面代码中的函数拥有两个整型返回值,函数声明时将返回值命名为 a 和 b,因此可以在函数体中直接对函数返回值进行赋值,在命名的返回值方式的函数体中,在函数结束前需要显式地使用 return 语句进行返回,代码如下:

func namedRetValues() (a, b int) {
    a = 1
    b = 2
    return
}

代码说明如下:

  • 第 1 行,对两个整型返回值进行命名,分别为 a 和 b。
  • 第 3 行和第 4 行,命名返回值的变量与这个函数的布局变量的效果一致,可以对返回值进行赋值和值获取。
  • 第 6 行,当函数使用命名返回值时,可以在 return 中不填写返回值列表,如果填写也是可行的,下面代码的执行效果和上面代码的效果一样。
    func namedRetValues() (a, b int) {
        a = 1
        return a, 2
    }

提示

同一种类型返回值和命名返回值两种形式只能二选一,混用时将会发生编译错误,例如下面的代码:

func namedRetValues() (a, b int, int)

编译报错提示:

mixed named and unnamed function parameters

意思是:在函数参数中混合使用了命名和非命名参数。

【相关推荐:Go视频教程

위 내용은 Go 언어에서 함수를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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