Go 언어

본문 바로가기
사이트 내 전체검색


Go 언어
Go 언어

1. 함수 사용하기

페이지 정보

작성자 관리자 댓글 0건 조회 3,369회 작성일 19-03-12 07:13

본문

1. 함수 사용하기

func 함수명() {}

​package main

import "fmt"


func hello() { // hello 함수 정의

 fmt.Println("Hello, world!")

}

func main() {

 hello()

}


Go 언어는 함수를 정의할 때 위치 제약이 없다.

다음과 같이 hello 함수가 main함수 보다 뒤에 있어도 컴파일 에러가 발생하지 않는다.


package main

import "fmt"

func main() {

 hello()

}

func hello() { // hello 함수 정의

 fmt.Println("Hello, world!")

}

1. 매개변수와 리턴값 사용하기


func 함수명(매개변수명 자료형)리턴값_자료형 {}


간단하게 두 정수를 더한 뒤 결과를 리턴하는 함수를 만들겠다.


package main

import "fmt"

func sum(a int, b int) int { // int형 매개변수 a, b 그리고 int 형 리턴값을 가지는 함수 정의

 return a + b

}

func main() {

 r := sum(1, 2)
 fmt.Println(r) // 3

}


리턴값에 이름을 지정할 수도 있다.


func 함수명(매개변수명 자료형)(리턴값_변수명 자료형) {}


package main

import "fmt"

//                          ↓ 리턴 값 변수의 이름을 r로 지정
func sum(a int, b int) (r int) {

 r = a + b // 리턴값 변수 r에 값 대입
 return    // 리턴값 변수를 사용할 때는 return 뒤에 변수를 지정하지 않음

}

func main() {

 r := sum(1, 2)
 fmt.Println(r)

}
 

2. 리턴값 여러개 사용하기


함수에서 값을 여러개 리턴할 수 있다.


func 함수명(매개변수명 자료형)(리턴값_자료형1, 리턴값_자료형2) {}



package main

import "fmt"

func SumAndDiff(a int, b int) (int, int) { // int형 리턴값이 두 개인 함수 정의

 return a + b, a - b // 리턴할 값 또는 변수를 차례대로 나열. 합과 차를 동시에 리턴

}

func main() {

 sum, diff := SumAndDiff(6, 2) // 변수 두 개에 리턴값 두 개를 대입
 fmt.Println(sum, diff)        // 8 4: 합과 차

} 


첫번째 리턴값은 생략하고 두번째 리턴값부터 사용하고 싶다면 _(밑줄)를 사용한다.


package main

import "fmt"

func SumAndDiff(a int, b int) (int, int) {

 return a + b, a - b // 리턴할 값 또는 변수를 차례대로 나열

}

func main() {

 _, diff := SumAndDiff(6, 2) // 첫 번째 리턴값은 _으로 생략, 두 번째 리턴값만 사용
 fmt.Println(diff)           // 4: 차

}

3. 가변인자 사용하기

함수의 매개변수 개수가 정해져 있지 않고 유동적으로 변하는 형태를 가변인자라고 한다.

func 함수명(매개변수명 ...자료형) 리턴값_자료형 {}

​가변인자를 활용해서 매개변수로 받은 모든 값을 더하는 함수를 작성해보겠다.

​package main

import "fmt"

func sum(n ...int) int { // int형 가변인자를 받는 함수 정의

 total := 0
 for _, value := range n { // range로 가변인자의 모든 값을 꺼냄

  total += value   // 꺼낸 값을 모두 더함

 }

 return total

}

func main() {

 r := sum(1, 2, 3, 4, 5)
 fmt.Println(r) // 15

}

 가변인자로 받은 변수는 슬라이스 타입이므로 range 키워드를 사용하여 값을 꺼내면 된다.



package main

import "fmt"

func sum(n ...int) int {

 total := 0
 for _, value := range n {

  total += value

 }

 return total

}

func main() {

 n := []int{1, 2, 3, 4, 5}
 r := sum(n...) // ...를 사용하여 가변인자에
                        // 슬라이스를 바로 넘겨줌

 fmt.Println(r) // 15

}

 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.