Giter VIP home page Giter VIP logo

go_memo's Introduction

GO언어 기초 문법 정리

function(함수)

keyword: func

  • go언어는 main package를 우선으로 실행

  • 함수의 이름가 대문자로 시작할 시 해당 함수를 export된다

  • 함수에 값을 받거나 return 할때는 그 값을 명시해야 한다

    func hello(a <a type>, b <b type>) <return type>{
      return "go lang"
    }
    
    ex:
    func multiply(a int,b int) int{
    	return a*b
    }
    • array를 return 하는 경우 []를 type 앞에 작성한다


  • 함수의 parameter의 타입이 동일할 시 아래와 같이 작성할 수 있다

    // (a int, b int) -> (a, b int)
    
     func multiply(a,b int) int{
    	return a*b
    }
  • 여러개의 값을 return 할 수 있다

    func lenAndSting(number string) (int,string){
    return len(name), name
    }
  • naked return
    go언어가 값을 return하는 또 다른 방식으로 return 값 타입 지정 시 해당 타입으로 return 될 변수를 만든 뒤 return 할 수 있다

    func nakedReturn1()(name string){
      // 선언한 변수에 return 할 값을 저장한다
      name="jun"
    
      // return문 뒤에 변수를 붙히지 않은 채 return한다
      // return문 뒤에 생성한 변수명을 전부 입력한다면 에러는 나지 않음
      return
    }
    nakedReturn1 output: "jun"
    
    func nakedReturn2() (name string, age int){
      name = "junsu"
      age = 18
    
      return
    }
    nakedReturn2 output: "junsu 18"
  • 무한한 갯수의 parameter들을 받을 수 있다

    func lala(words ...int){
      fmt.Println(words)
    }
    
    func main(){
      lala(1,2,3,4,5)
    }
    
    output: [1 2 3 4 5]
    • ... 키워드를 통해 무한한 갯수의 parameter를 받을 수 있으며 array로 저장된다
  • defer 함수가 return 됐을 때 defer 키워드 뒤에 입력한 함수를 실행한다

    func deferFunc(){
      fmt.Println("defer func!!")
    }
    
    func goFunc()(text string){
      defer deferFunc()
      fmt.Println("goFunc")
    
      text="return string"
      return
    }
    
    func main() {
      fmt.Println(goFunc())
    }
    
    // |output|
    // goFunc
    // defer func!!
    // return string

Variable & constants(변수와 상수)

keyword: var(변수), const(상수)

  • 선언 방법

    <var or const> <name> <type> = <value>
    
    ex:
    const name string = "junsu"
    var age int = 18

  • 축약형

    name := "junsu"
    • 초기값의 타입에 맞춰 변수의 타입이 지정되며 타입이 변경되지 않는다
    • 함수 내부에서만 축약형으로 선언 가능하다
    • var의 축약형으로 수정이 가능한 변수가 선언된다

반복문

  • forEach, map 등의 배열 함수 없이 for만 존재

  • for문

    func main(){
      numbers := [...]int{10,20,30,40,50}
    
      for i := 0; i < len(numbers); i++{
        fmt.Println(numbers[i])
      }
    }
    
    // output
    // 10
    // 20
    // 30
    // 40
    // 50
  • array를 도는 for문

    range를 이용하여 배열의 요소들을 순회할 수 있다

    func main() {
    numbers := [...]int{10,20,30,40,50}
    
    	for index, number := range(numbers){
    		fmt.Println("index: ",index, "number: ",number)
    	}
    }
    
    // output
    // index:  0 number:  10
    // index:  1 number:  20
    // index:  2 number:  30
    // index:  3 number:  40
    // index:  4 number:  50

if else

  • 기본 문법은 c언어와 유사

    if a>10{
      // ...code
    }else{
      // ...code
    }

  • if else문 내에서만 사용할 변수를 선언 할 수 있다
    variable expression

    number:=10
    if newNumber := number+10; newNumber < 30 {
      fmt.Println("if", newNumber)
    } else{
      fmt.Println("else", newNumber)
    }

switch

  • variable expression 사용 가능
  • 소괄호 제거
  • 이하생략

pointer

C언어와 동일


Array

  • 선언방법

    value1 := [4]int{1,2,3,4}
    // 길이가 4인 int형 배열을 선언한 뒤 {1,2,3,4}값을 넣는다
    // 배열 크기 고정
    
    value2 := [...]int{1,2,3,4}
    // {} 안에 든 값의 갯수만큼 int형 배열을 생성 후 값을 넣는다
    // 배열 크기 고정
    
    value3 := []int{1,2,3,4}
    // 배열의 크기가 정해지지 않음
    // append 함수를 사용해서 배열의 크기를 추가할 수 있다
  • Array Sub-slice Array의 일정 부분을 추출할 수 있다

    • [muber : number]

      numbers := []int{1,2,3,4,5,6,7,8,9}
      fmt.Println(numbers[3:6])
      //output : [4 5 6]

      array의 3번째 요소부터 6-1번째 요소까지 추출


    • [number : ]

        numbers := []int{1,2,3,4,5,6,7,8,9}
        fmt.Println(numbers[3:])
        //output : [4 5 6,7,8,9]

      array의 3번째 요소부터 마지막 요소까지 추출


    • [ : number]

        numbers := []int{1,2,3,4,5,6,7,8,9}
        fmt.Println(numbers[:6])
        //output : [1 2 3 4 5 6]

      array의 첫번째 요소부터 6-1번째 요소까지 추출

map

  • C++의 map과 거의 유사함

  • 선언 방식

    myMap := map[<key type>]<value type>{key:value...}

    ex

    // map 선언
    myMap := map[string]int{"class":4, "grade":2, "number":5}
    
    for key,value :=range myMap{
    	fmt.Printf("key : %s, value : %d\n",key,value)
    }

    output

    key : class, value : 4
    key : grade, value : 2
    key : number, value : 5

struct

  • 선언 방법

    type person struct{
      name string
      age int
      favFood []string
    }
  • struct 변수 생성

    • 방식 1

      favFood := []string{"cake","chicken"}
      jun := person{"junsu",18,favFood}
      // struct에 입력한 key값 순서대로 argument를 값으로 넣는다
      
      fmt.Println(jun)
      
      // output
      // {junsu 18 [cake chicken]}
    • 방식2

      favFood := []string{"cake","chicken"}
      jun := person{name:"junsu",age:18, favFood:favFood}
      // sturct의 key값에 맞춰 넣을 값을 지정한다
  • constructor가 존재하지 않음

go_memo's People

Contributors

baejoonsoo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.