2020-10-16 Golang Tutorial 변수

배경

  • 평소 golang에 대해서 듣긴했지만 자세히 들여다 보진 않았다. 디스커버리 go 책이 있어서 책을 보면서 간단하게 golang문법을 정리해본다.

Go Lang

  • 특징
    • 빠른 컴파일
    • GC지원
    • 정적자료형이지만 동적프로그래밍을 하는 느낌

자료형, 변수

  • Go는 자료형을 정적으로 검사한다.

  • 자료형을 미리 선언하고 값을 할당하는 번거로움을 벗어나 자료형 추론 기능도 지원한다.

  • 변수선언

    • var x int // 변수 선언
      var x int = 10 // 변수할당
      var arr [5] int
      
      func(int, int) // 정수 2개를 인자로 전달
      func(int) int // 정수 인자를 받고 정수를 반환
      func(int, func(int, int)) func(int) int // 정수와, 2개의 정수를 받는 함수를 받고, 정수 하나를 받고 정수 하나를 반환하는 함수
      
  • 자료형 추론 : Go에서는 자료형이 무엇인지 추론할 수 있는 경우 자료형을 안써도 된다.

    • var i = 10
      var p = &i // i의 주소값을 p에 저장
      
      // var도 생략가능
      i := 10 // i는 새로운 정수형 변수
      p := &i // s는 새로운 문자열 변수
      i = 20 // i의 값을 변경
      j = 30 // 불가능, j는 선언되있지 않다
      i = "hello" // 불가능, i는 이미 정수형
      i := 30 // 불가능, i는 이미 선언됬다.
      i := "hi" // 불가능, 이미선언됬고 정수형
      
      
      
  • 함수와 간단한 제어구조

    • package main
      
      import "fmt"
      
      fun fac(n int) int {
        if <= 0 {
          return 1
        }
        return n * fac(n-1)
      }
      
      func facItr(n int) int {
        result := 1
        for n > 0 {
          result *= n
          n--
        }
        return result
      }
      
      func facItr2(n int) int {
        result := 1
        for i := 2; i <= n; i++ {
          result *= i
        }
      }
      
      func main() {
        fmt.Println(fac(5))
      }
      

      느낀점

  • 아직까지는 문법이기 때문에 어떤 부분이 좋다 안좋다는 모르겠다. 자바, C에서는 “int var”과 같이 자료형-변수이름이였는데, 고랭에서는 변수이름-자료형이라 순서가 헷갈리긴한다. 차근차근 2,3,4장을 보면서 고랭문법을 익혀봐야겠다.

Written on October 16, 2020