본문 바로가기
IT 초보코딩의 세계/Go 언어

Go 언어의 기본 문법 함수 와 클로저 5장

by 조이럭키7 2023. 3. 28.
반응형

5장을 나가기에 앞서 4장 for 구문에 대해서 숙지 하지 않았다면 아래포스팅을 읽고 5장을 공부하자

https://joylucky7.tistory.com/21

 

Go 언어의 기본 문법 for 구문 3장

2장에서는 기본 문법에서 연산자와 포인터, if 구문, switch 구문에 대해서 알아보았으며 https://joylucky7.tistory.com/20 참고하자!! ☆ for 구문 ▷ for 초기값; 표현식; 변화식{ } package main import ( "fmt" ) func

joylucky7.tistory.com


함수

◆ 매개변수

func 함수이름(매개변수이름 매개변수자료형, 매개변수이름 매개변수자료형, …){
  함수 내용
}
func add(a int, b int){
  // a+b
}

매개변수의 자료형이 동일한 자료형이면 자료형은 하나만 작성해도 됨

func add(a , b int){
  // a+b
}

리턴

func 함수이름(매개변수이름 매개변수자료형, 매개변수이름 매개변수자료형, …)리턴타입{
  함수 내용
}
func add(a int, b int)int{
  return a+b
}

● 다중 리턴

func add(a int, b int)(int, int){
  return a+b, a-b
}

Named Return: 반환하는 값을 미리 함수의 헤더에 정의하는 방식

func add(a int, b int)(add, sub, int){
  add = a+b
  sub = a-b
  return
}

  함수는 First class(일급 객체) 로서 변수에 바인딩이 가능하다

import "fmt"

var adder = func(a,b int)int{
  return a+b
}
var subtractor = func(a,b int) int{
return a-b
}

func main() {
  var addResult = adder(3,2)
  var subResult = subtractor(3,2)
  fmt.Println(addResult)
  fmt.Println(subResult)
}

  또한 함수와 if를 같이 사용한다면

package main

import (
   "fmt"
   "io/ioutil"
)

func main() {
  b, err := ioutil.ReadFile("./joylucky.txt")
  if err == nil {
      fmt.Printf("contents: %s\n", b)
  }

  if b, err := ioutil.ReadFile("./joylucky.txt"); err == nil{
  fmt.Printf("contents: %s\n", b)
  }

  fmt.Println("종료")
}

  함수와 switch 같이 사용할 수 도 있다.

package main

import (
  "fmt"
  "math/rand"
  "time"
)

func main() {
  rand.Seed(time.Now().UnixNano())      // 현재 시간으로 Seed 값 설정
  switch i := rand.Intn(10); {          // rand.Intn 함수를 실행한 뒤 i에 대입
  case i >= 3 && i < 6:                 // i가 3보다 크거나 같으면서 6보다 작을 때
          fmt.Println("3 이상, 6 미만") // 코드 실행
  case i == 9:                          // i가 9일 때
          fmt.Println("9")              // 코드 실행
  default:                              // 모든 case에 해당하지 않을 때
          fmt.Println(i)                // 코드 실행
  }

}

  만약 다른 패키지 함수를 호출하고자 한다면

package main

import (
  "fmt"
  "math/rand"
  "time"
)

func main() {
  rand.Seed(time.Now().UnixNano())      // 현재 시간으로 Seed 값 설정
  switch i := rand.Intn(10); {          // rand.Intn 함수를 실행한 뒤 i에 대입
  case i >= 3 && i < 6:                 // i가 3보다 크거나 같으면서 6보다 작을 때
           fmt.Println("3 이상, 6 미만") // 코드 실행
  case i == 9:                          // i가 9일 때
           fmt.Println("9")              // 코드 실행
  default:                              // 모든 case에 해당하지 않을 때
           fmt.Println(i)                // 코드 실행
  }

}

이상으로 기본 문법에 대해서 알아보았다.

반응형

댓글