예제로 배우는 Go 프로그래밍 - Go 프로그래밍 언어 소개

lets's go를 배워보자 1일차 - go project 설정과 web 기본

package 및 모듈 탐색

<aside> 📌 Go lang의 특성

변수와 상수

Data Type

연산자

조건문

반복문

함수

Anonymous Function (익명 함수)

Closure (클로저)

Collection - Array(배열)

Collection - Slice

Collection - Map

Package (패키지)

Struct (구조체)

Method (메소드)

Interface (인터페이스)

Error 처리

defer와 panic

goroutine

Go Channel

</aside>

Go lang의 특성

  1. 시스템 프로그래밍을 위해 개발되었다

  2. 컴파일러를 통해 컴파일 되며, statically typed의 언어이다

  3. Garbage Collection 기능을 제공한다

  4. Commuticating Sequential Processes 스타일의 Concurrent 프로그래밍을 지원한다

    Commuticating Sequential Processes (CSP)

변수와 상수

  1. 변수

    var i, j, k int = 1, 2, 3
    
    var i = 1    //자동으로 정수형 1이 할당된다
    var s = "Hi"    //자동으로 문자열 Hi가 할당된다
    
  2. 상수

    const j int = 10
    const k = "Hello"
    
    const (
    	Apple = iota    // 0
    	Grape           // 1
    	orange          // 2
    )
    
  3. 키워드

    <aside> 🚫 break default func interface select case defer

    go map struct chan else goto package

    switch const if range type for continue

    import return var fallthrough

    </aside>

Data Type

  1. Data type의 종류

    1. String

      • 문자열은 Back Quote( ) 또는 큰따옴표( “ “ )를 사용해 표현한다
      • Immutable 타입이다
      • Back Quote
        • 별도로 해석되지 않고 Raw String 그대로의 값을 갖는다
        • 복수 라인의 문자열을 표현할 때 자주 사용된다
      • 큰따옴표
        • Interpreted String Literal이다
        • 복수 라인에 걸쳐쓸 수 없다
        • ‘ + ‘ 연산자를 이용할 수 있다
      package main
      import "fmt"
      
      func main() {
      	rawLiteral := `아리랑\\n
      아리랑\\n
        아라리요`
      
      	interLiteral := "아리랑아리랑\\n아리리요"
      	interLiteral2 := "아리랑아리랑\\n" + "아리리요"
      }
      
      // rawLiteral
      /* 아리랑\\n
        아리랑\\n
         아리리요 */
         
      // interLiteral & interLiteral
      /* 아리랑아리랑
         아리리요*/
      
    2. bool

      • true or false로 표현되는 자료형
    3. 정수형

      • int int8 int16 int32 int64
      • uint uint8 uint16 uint32 uint64 uintptr
    4. 실수형 및 복소수

      • float32 float64
      • complex64 complex128
    5. 기타

      • byte : uint8과 동일하며, byte 코드에 사용한다
      • rune : int32과 동일하며, 유니코드 코드포인트에 사용한다
  2. Type Conversion

    : 하나의 데이터 타입에서 다른 데이터 타입으로 변환하는 과정