GO 퀴즈 테스트 102

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

package main
func main() {
    msg := "Hello"
    say(&msg)
    println(msg)
}
 
func say(msg *string) {    
    *msg = "Hi"
}

Hello
Hi
HelloHi
컴파일 에러

Q2. 다음 중 Variadic Function (가변인자함수)를 올바르게 표현한 것은?

func f(s []string) { ... }
func f(s string...) { ... }
func f(s ...string) { ... }
func f(s [:]string) { ... }

Q3. 다음 중 Go 언어의 함수에 대한 설명으로 틀린 것은?

Go 언어에서 함수는 일급함수이다
함수는 다른 함수의 파라미터로 전달될 수 있다
함수는 다른 함수의 리턴값으로 사용될 수 있다
익명함수는 변수에 할당될 수 없다

Q4. 다음 중 Go 언어의 배열(array)에 대한 설명으로 틀린 것은?

배열은 Value 타입이다
배열을 함수의 파라미터로 전달하면, 배열의 값들이 모두 복사되어 전달된다.
배열의 크기는 Type의 일부분이다. 즉, [5]int와 [10]int는 다른 Type이다.
배열은 다른 변수에 = 을 이용하여 할당하면, 배열의 포인터만 전달된다.

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

s := []int{0, 1, 2, 3, 4, 5}
s = s[2:5]     
s = s[1:]      
fmt.Println(s) 

2,3,4,5
2,3,4
3,4
3

Q6. 다음 중 Go언의 map 에 대한 설명으로 틀린 것은?

Map은 키에 대응하는 값을 신속히 찾아준다
Map은 해시테이블을 구현한 자료구조이다
Map[key]에 key를 발견하지 못하면 Exception을 발생시킨다
Map을 for range 루프로 출력하면 실행시마다 출력 순서가 다를 수 있다

Q7. 다음 중 Go에서 Custom 데이타 타입을 표현하기 위해 사용하는 것으로 필드들의 집합체인 것은?

interface
struct
type
package

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

package main

import "fmt"

func main() {
	var x interface{}
	x = 1
	x = "Tom"
	fmt.Println(x)
}

1
Tom
x의 주소값
컴파일 에러

Q9. C#, Java 같은 언어에서의 finally 블럭은 마지막에 Clean-up 작업을 위해 사용된다. Go에서 이렇게 그 함수 마지막에서 Clean-up하는 기능을 하는 것은?

finally
defer
goto
fallthrough

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

package main
 
import "fmt"
 
func main() {
  c := make(chan int)
  c <- 1   
  fmt.Println(<-c) 
}

1
컴파일 에러
데드락
c 채널의 주소값