티스토리 뷰

Programming Language/Go

[Go] Go 문법의 특징

SdardewValley 2021. 10. 8. 20:00
반응형

📌 간결하고 유연하다

Go는 문법 요소는 줄이고 유연함을 높였다

 

  • while문이 없고 for 문을 사용
package main

import "fmt"

func main() {
	sum := 0

	// 초기문; 조건문; 증가치
	for i := 0; i < 10; i++ {
		sum += i
	}

	fmt.Println(sum) // 45
}
package main

import "fmt"

func main() {
	sum, i := 0, 0

	// for문에 조건문만 사용
	for i < 10 {
		sum += i
		i++
	}

	fmt.Println(sum) // 45
}
package main

import "fmt"

func main() {
	sum, i := 0, 0

	// for문에 아무것도 없음
	for {
		if i >= 10 {
			break
		}
		sum += i
		i++
	}

	fmt.Println(sum) // 45
}

 

  • switch에 조건문을 사용할 수 있음 ⇒ if문 대체 가능
package main

import "fmt"

func main() {
	c := 'a'

	switch {
	case '0' <= c && c <= '9':
		fmt.Printf("%c: 숫자", c)
	case 'a' <= c && c <= 'z':
		fmt.Printf("%c: 소문자", c) // a: 소문자
	case 'A' <= c && c <= 'Z':
		fmt.Printf("%c: 대문자", c)
	}
}

 

 

 

📌 정적 타입 언어 + 동적 타입 언어

Go는 정적 타입 언어이지만, 동적 타입 언어의 특성도 가지고 있다.

 

  • 변수의 타입을 지정하지 않아도 컴파일러가 변수 타입을 지정해줌
  • 덕 타이핑 방식으로 동작하는 인터페이스

 

 

📌 모호한 요소 제거

Go는 정적 타입 언어이지만, 동적 타입 언어의 특성도 가지고 있다.

  • ++ / -- 와 같은 증감 연산자는 후치 연산만 가능
    • 증감 연산자는 반환 값이 없음
    • ++i 와 같은 전치 연산 불가능
  • 포인터 사용은 허용. BUT 포인터 연산은 허용하지 않음.

 

 

📌 세미콜론 생략 가능

  • 세미콜론을 사용해서 여러 문장을 한 줄에 표현 가능
  • 컴파일 시 컴파일러가 문장 끝에 세미콜론을 넣어줌
    • 여는 중괄호 { 는 함수선언 혹은 제어문이 시작되는 줄에 써야 함
package main

import "fmt"

func main() {

	for j := 5; j >= 5; j-- // 컴파일러가 ;를 자동으로 삽입하여 syntax error 발생
	{
		fmt.Print(j)
	}	
}

 

 

📌 주석

  • // 로 한 줄 주석
  • /* */ 로 일부분이나 여러 줄 주석

 

 

📌 gofmt로 코드 서식 지정

  • gofmt 도구로 코드의 스타일을 Go의 스타일로 변경 할 수 있음
$ gofmt -h
usage: gofmt [flags] [path ...]
  -cpuprofile string
        write cpu profile to this file
  -d    display diffs instead of rewriting files
  -e    report all errors (not just the first 10 on different lines)
  -l    list files whose formatting differs from gofmt's
  -r string
        rewrite rule (e.g., 'a[b:len(a)] -> a[b:]')
  -s    simplify code
  -w    write result to (source) file instead of stdout

gofmt의 사용법이다. w 옵션을 주면 자동으로 저장해준다.

 

gofmt 파일명

위와 같이 입력하면 파일의 스타일이 변경된다.

 

기존 코드
Go 스타일의 코드

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함