>  기사  >  백엔드 개발  >  golang 함수 방법

golang 함수 방법

WBOY
WBOY원래의
2023-05-16 12:08:39394검색

Golang은 현재 가장 인기 있는 프로그래밍 언어 중 하나입니다. 그 특징 중 하나는 기능과 메소드의 뛰어난 디자인입니다. 이 기사에서는 Golang의 기능과 방법에 대한 관련 지식을 자세히 소개합니다.

1. 함수

Golang 함수의 기본 구문:

func function_name( [parameter list] ) [return_types] {
   //函数体
}

함수의 매개변수 목록과 반환 값 유형은 모두 선택 사항이므로 작성할 필요가 없습니다. 함수에 반환 값이 하나만 있고 해당 유형이 비인터페이스 유형인 경우 괄호를 생략할 수 있습니다.

예:

func add(x int, y int) int {
   return x + y
}

func main() {
   fmt.Println(add(1, 2))
}

add 함수는 int 유형의 두 매개변수를 받고 반환 값 유형도 int입니다. 이 함수는 add(1, 2) 표현식을 통해 호출되고 해당 반환 값이 출력됩니다. 출력은 3입니다.

Golang 함수는 여러 반환 값을 지원합니다. 예를 들면 다음과 같습니다.

func swap(x, y string) (string, string) {
   return y, x
}

func main() {
   a, b := swap("hello", "world")
   fmt.Println(a, b)
}

함수 swap은 두 개의 문자열 유형 매개변수를 받고 반환 값 유형은 두 개의 문자열 유형입니다. 즉, 반환 값은 다중 할당을 통해 두 개의 문자열입니다 a, b := swap("hello", " world" ) 함수 반환 값을 각각 a와 b에 할당하고 최종적으로 hello world를 출력합니다.

2. Method

Golang 언어에서 메소드는 클래스인 특정 유형의 수신기에 대한 함수를 나타냅니다. 이 유형은 구조체(struct) 또는 사용자 정의 유형일 수 있습니다.

메서드의 정의 형식은 다음과 같습니다.

func (variable_name type) function_name([parameter list]) [return_types] {
    //函数体  
}

여기서 Variable_name은 유형(type)의 인스턴스이고 function_name은 해당 유형의 메소드입니다.

예:

type Rectangle struct {
   length, width int
}

func (r Rectangle) area() int {
   return r.length * r.width
}

func main() {
   r := Rectangle{length: 10, width: 5}
   fmt.Println("area: ", r.area())
}

위 코드는 길이와 너비라는 두 개의 필드가 있는 Rectangle 유형을 정의하고, Area() 메서드도 정의하므로 클래스입니다. 메서드 선언에서 수신자는 Rectangle 형식이고 메서드 이름은 Area()이며 반환 값은 int 형식입니다.

다음 문은 r이라는 Rectangle 인스턴스를 만들고 해당 Area() 메서드를 호출하여 이 클래스를 테스트합니다.

실행 출력 결과는 다음과 같습니다.

area: 50

메서드에는 유형을 가리키는 포인터인 포인터 수신기도 있을 수 있습니다. 예:

type Circle struct {
   radius float64
}

func (c *Circle) area() float64 {
   return math.Pi * c.radius * c.radius
}

func main() {
   c := Circle{radius: 5}
   fmt.Println("area:", c.area())
}

위 코드는 radius라는 필드가 있는 Circle 유형을 정의하며, Area() 메서드도 정의하고 포인터 수신기를 통해 해당 유형을 가리킵니다. 따라서 Area() 메서드는 Circle 인스턴스의 값을 변경합니다.

마지막으로 Golang의 모든 유형은 명시적으로 복사 유형(수신자)으로 표시되지 않는 한 메소드를 가질 수 있다는 점에 유의해야 합니다. 그러나 어떤 경우에는, 특히 고성능 산업에서는 포인터 수신기를 사용하는 것이 더 성능 효율적입니다. 그러나 실수로 잘못된 메소드를 작성하면 프로그램에 오류가 발생하므로 이러한 규칙을 기억해야 합니다.

3. 요약

Golang 언어에서는 함수와 메서드(클래스)가 프로그래밍의 기본 단위입니다. 함수의 구문 구조를 학습함으로써 함수를 쉽게 정의하고 호출할 수 있어 프로그램 구조가 더욱 명확하고 간결해집니다. 동시에 메서드는 클래스에 내장되어 클래스의 일부이므로 클래스의 인스턴스 변수와 메서드를 캡슐화합니다. 이를 통해 프로그램의 다양한 정보와 방법을 보다 편리하게 관리할 수 있고, 자원의 낭비를 피할 수 있습니다.

위 내용은 golang 함수 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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