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