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
const
상수 선언
func main() {
const x int = 1
println(x)
const (
a = 2
b = 3
c = 4
)
println(a + b + c)
}
//OUTPUT
1
9
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
range
컬렉션에서 각 요소의 인덱스와 값을 반환
func main() {
numbers := []int{1, 2, 3}
for index, num := range numbers {
println(index, num)
}
}
//OUTPUT
0 1
1 2
2 3
break
for
, switch
, select
에서 빠져나올 때 사용
func main() {
i := 0
for i < 10 {
i++
if i == 5 {
break
}
}
println("i :", i)
}
//OUTPUT
i : 5
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
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
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
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
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
if
조건이 맞으면 실행
func main() {
a := 1
if a == 0 {
println("a is 0")
}
println("a is", a)
}
//OUTPUT
a is 1
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
func
함수 선언
func main() {
sum(5, 10)
}
func sum(a int, b int) {
println("sum :", a+b)
}
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
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
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}
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
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
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
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
}