GO 퀴즈 테스트 201

Q1. 다음 중 goroutine 에 대한 설명으로 틀린 것은?

goroutine 은 "go" 키워드를 사용하여 실행한다
goroutine 과 OS의 쓰레드는 1:1 관계에 있다
goroutine 은 비동기적으로 함수루틴을 실행한다
goroutine 은 채널을 통하여 서로 통신할 수 있다

Q2. 다음 중 Go에서 복수 채널을 동시에 기다리기 위해 사용하는 것은?

chan
switch
select
range

Q3. 다음 Go 코드가 실행되었을 때, 출력값은?

func main() {
L1:
	for {
		break L1
	}

	println("OK")
}

OK를 출력한다
무한루프에 빠진다
데드락에 걸린다
아무 출력없이 종료된다

Q4. 다음 Go 코드가 실행되었을 때, 출력값은?

func main() {
    ch := make(chan string, 1)
    f(ch)
} 
 
func f(ch chan<- string) {
    ch <- "OK"
    str := <-ch 
	println(str)
}

OK를 출력한다
컴파일 에러가 발생한다
런타임 에러가 발생한다
데드락이 발생한다

Q5. 다음 코드가 실행되었을 때, 출력값은?

func main() {
	A := [3][3]int{{1, 1, 1}, {1, 1, 1}, {1, 1, 1}}

	sum := 0

LOOP:
	for i := 0; i < 3; i++ {
		for j := 0; j < 3; j++ {
			if i == j {
				continue LOOP
			}
			sum += A[i][j]
		}
	}

	fmt.Println(sum)
}

0
3
6
9

Q6. 다음 코드가 실행되었을 때, 변수 n 의 값은?

package main

func foo() func() int {
	i := 0
	return func() int {
		i++
		return i
	}
}

func main() {
	f := foo()
	n := f() + f()
	println(n)
}

1
2
3
4

Q7. 다음 코드가 실행되었을 때, 출력값은?

type circle struct{ center, radius float32 }

func (r *circle) move1() { r.center += 1.0 }
func (r circle) move2()  { r.center += 1.0 }

func main() {
	c := circle{1.0, 2.0}
	c.move1()
	c.move2()
	fmt.Println(c.center)
}

1
2
3
4

Q8. 다음 코드가 실행되었을 때, 출력값은?

func main() {
	var a interface{} = 1.0
	i := a.(int)
	fmt.Println(i)
}

1
1.0
컴파일 에러
런타임 에러

Q9. 다음 중 type 문을 잘못 사용한 것은?

type A struct {}
type I interface {}
type mysql "db/mysql/db"
type calc func(int, int) int

Q10. 다음 중 import 문을 잘못 사용한 예는?

import _ "xlib"
import "lib/mongo/db"
import mongo "lib/mongo/db"
import ("fmt", "os")