Golang 고언어 25개 키워드 정리

Golang 고언어 25개 키워드 정리

go언어는 25개의 키워드가 있으며 여기 에서 확인할 수 있다.

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

var

변수 선언

func main() {
	var x int
	println(x)
	x = 2
	println(x)
	var a, b, c int = 1, 2, 3
	println(a, b, c)
}
 
//OUTPUT
0
2
1 2 3

https://play.golang.org/p/5BLk3mH-U4S

const

상수 선언

func main() {
	const x int = 1
	println(x)
	const (
		a = 2
		b = 3
		c = 4
	)
	println(a + b + c)
}
//OUTPUT
1
9

https://play.golang.org/p/33pedQdF2-E

for

반복문으로 Go언어에는 반복문은 for 하나

func main() {
	sum := 0
	for i := 1; i <= 10; i++ {
		sum += i
	}
	println("sum :", sum)
 
	i, sum2 := 0, 0
	for i < 10 {
		i++
		sum2 += i
	}
	println("sum2 :", sum2)
}
 
//OUTPUT
sum : 55
sum2 : 55

https://play.golang.org/p/_Np9gv_uH9U

range

컬렉션에서 각 요소의 인덱스와 값을 반환

func main() {
	numbers := []int{1, 2, 3}
 
	for index, num := range numbers {
		println(index, num)
	}
}
 
//OUTPUT
0 1
1 2
2 3

https://play.golang.org/p/bvH0Q-tgWZq

break

for, switch, select 에서 빠져나올 때 사용

func main() {
	i := 0
	for i < 10 {
		i++
		if i == 5 {
			break
		}
	}
 
	println("i :", i)
}
 
//OUTPUT
i : 5

https://play.golang.org/p/ZHpbEMD8eqb

continue

for 루프 시작 부분으로 이동

func main() {
	i := 0
	for i < 5 {
		i++
		if i == 3 {
			continue
		}
		println("i :", i)
	}
}
 
 
//OUTPUT
i : 1
i : 2
i : 4
i : 5

https://play.golang.org/p/74uu_8HxfPB

switch

여러 값을 비교하는 조건문 표현

func main() {
	num := 5
	switch {
	case num == 10:
		println("num is 10")
	case num == 8:
		println("num is 8")
	case num == 5:
		println("num is 5")
	default:
		println("num is less than 5")
	}
}
 
//OUTPUT
num is 5

https://play.golang.org/p/B_nc5YUupO7

case

조건문을 작성

func main() {
	num := 1
	switch num{
	case 1, 2:
		println("num is 1 or 2")
	case 3, 4:
		println("num is 3 or 4")
	default:
		println("num is more than 5")
	}
}
 
//OUTPUT
num is 1 or 2

https://play.golang.org/p/c-O9CtaGqlM

default

모든 case에 부합하지 않을 때 실행

func main() {
	num := 3
	switch {
	case num == 10:
		println("num is 10")
	case num == 8:
		println("num is 8")
	case num == 5:
		println("num is 5")
	default:
		println("num is less than 5")
	}
}
 
//OUTPUT
num is less than 5

https://play.golang.org/p/QRZxKDV45Fr

fallthrough

case를 만족해도 아래의 case 들을 실행하기 위해 fallthrough 를 사용

  • go 컴파일러가 자동으로 break 문을 각 case문 블럭 마지막에 추가하므로, 조건문이 해당하는 경우 해당 case에서 switch 문이 종료된다.
func main() {
	num := 1
	switch {
	case num < 10:
		println("num is less than 10")
		fallthrough
	case num < 8:
		println("num is less than 8")
		fallthrough
	default:
		println("num is less than 5")
	}
}
 
//OUTPUT
num is less than 10
num is less than 8
num is less than 5

https://play.golang.org/p/7S9cz3r34vo

if

조건이 맞으면 실행

func main() {
	a := 1
	if a == 0 {
		println("a is 0")
	}
	println("a is", a)
}
 
 
//OUTPUT
a is 1

https://play.golang.org/p/WgZW1uS4xrp

else

if 조건식이 모두 거짓일 때 실행

func main() {
	a := 1
	if a == 0 {
		println("a is 0")
	} else if a == 2 {
		println("a is 2")
	} else {
		println("a is 1")
	}
}
 
//OUTPUT
a is 1

https://play.golang.org/p/nMmsymTJpVf

func

함수 선언

func main() {
	sum(5, 10)
}
 
func sum(a int, b int) {
	println("sum :", a+b)
}

https://play.golang.org/p/-w5wVi_R_ep

return

값을 반환

func main() {
	println(sum(5, 10))
	println(multiply(5, 10))
}
 
func sum(a int, b int) (sum int) {
	sum = a + b
	return
}
 
func multiply(a int, b int) int {
	return a * b
}
 
//OUTPUT
15
50

https://play.golang.org/p/EuENr4nHhq1

defer

함수 내에서 제일 마지막에 실행

func main() {
	defer println("last")
	println("first")
}
 
//OUTPUT
first
last

package

코드의 모듈화, 코드의 재사용 가능

  • main 패키지 : 실행 프로그램
  • 그 외 패키지 : 공유 패키지(라이브러리)

import

다른 패키지를 사용하기 위해 포함시킬 것을 선언

import "fmt"
 
func main() {
	fmt.Println("fmt package")
}
 
//OUTPUT
fmt package

https://play.golang.org/p/X_K9NVQaAjP

type

새로운 타입 정의

struct

변수를 묶어서 새로운 자료형 정의 (Custom Data Type)

type hotel struct {
	name  string
	price int
}
 
func main() {
	var h1 = hotel{}
	h1.name = "abc"
	h1.price = 5000
 
	h2 := hotel{name: "cde", price: 1000}
 
	fmt.Println(h1, h2)
}
 
//OUTPUT
{abc 5000} {cde 1000}

https://play.golang.org/p/7szHDOKUUcx

interface

메소드들의 집합체

type reserve interface {
	twoday() int
}
 
type hotel struct {
	name  string
	price int
}
 
type airbnb struct {
	name   string
	price  int
	coupon int
}
 
func (h hotel) twoday() int {
	return h.price * 2
}
 
func (a airbnb) twoday() int {
	return a.price*2 - a.coupon
}
 
func main() {
	a := hotel{"aaa", 1000}
	b := airbnb{"bbb", 1000, 500}
 
	makeReserve(a, b)
}
 
func makeReserve(r ...reserve) {
	for _, v := range r {
		fmt.Println(v.twoday())
	}
}
 
//OUTPUT
2000
1500

https://play.golang.org/p/DHvzljGxpsQ

map

해시테이블을 구현한 자료구조

func main() {
	m := map[string]int{
		"one": 1,
		"two": 2,
	}
 
	m["five"] = 5
 
	for k, v := range m {
		println(k, v)
	}
}
 
//OUTPUT
one 1
two 2
five 5

https://play.golang.org/p/qJXZPAV7kj8

go

go 키워드로 함수를 호출하면, goroutine 실행

func main() {
	go num(1)
	go num(2)
	go num(3)
 
	time.Sleep(time.Second * 3)
}
 
func num(n int) {
	println(n)
}
 
//OUTPUT
3
1
2

https://play.golang.org/p/Uimk2yogTOC

chan

채널 선언

  • 채널 : 값을 주고 받는 통로
func main() {
	ch := make(chan int)
 
	go func() {
		ch <- 1
	}()
 
	num := <-ch
 
	println(num)
}
 
//OUTPUT
1

select

다중 채널에서 대기 후 값 수신하면 실행

goto

특정 레이블로 이동

func main() {
	num := 1
	if num == 1 {
		goto ONE
	} else {
		goto OTHER
	}
 
ONE:
	println("num is 1")
	goto END
OTHER:
	println("num is not 1")
END:
 
//OUTPUT
num is 1
}
 

https://play.golang.org/p/xwAvtBmJJXp