1) GO가 무엇인지 설명하십시오.
GO는 간단하고 안정적이며 효율적인 소프트웨어를 쉽게 구축 할 수있는 오픈 소스 프로그래밍 언어입니다. 프로그램의 종속성을 효율적으로 관리 할 수있는 속성을 가진 패키지로 구성됩니다.
2) GO에서 구문은 무엇입니까?
GO의 구문은 EBNF (Extended Backus-Naur Form)를 사용하여 지정됩니다.
- Production = production_name“=”[Expression]
- 표현식 = 대안 {“l”대안}
- 대안 = 기간 {기간}
- 용어 = Production_name l 토큰 [“…”token] l 그룹 l 옵션 l 반복
- 그룹 =“(“Expression”)”
- 옵션 = "["표현식 "]"
- 반복 =“{“Expression“}”
3) 문자열 리터럴이 무엇인지 설명하세요?
문자열 리터럴은 일련의 문자를 연결하여 얻은 문자열 상수를 나타냅니다.
두 가지 형태가 있습니다.
- 원시 문자열 리터럴 : 원시 문자열 리터럴의 값은 역 따옴표 ''사이의 문자 시퀀스입니다. 문자열 리터럴의 값은 따옴표 사이에 중단되지 않은 문자로 구성된 문자열입니다.
- 해석 된 문자열 리터럴 : 큰 따옴표 ""사이에 표시됩니다. 줄 바꿈을 포함 할 수없는 큰 따옴표 사이의 텍스트는 리터럴의 값을 형성합니다.
4) Go 프로그램의 패키지를 설명 하시겠습니까?
모든 GO 프로그램은 패키지로 구성됩니다. 프로그램이 main 패키지에서 실행되기 시작합니다 . 이 프로그램은 "fmt" 및 "math / rand" 가져 오기 경로가있는 패키지를 사용하고 있습니다.
5) GO의 작업 공간을 설명 하시겠습니까?
작업 공간 내에 GO 코드를 보관해야합니다. 작업 공간은 루트에 세 개의 디렉토리가있는 디렉토리 계층 구조입니다.
- src는 패키지로 구성된 GO 소스 파일을 포함합니다.
- pkg는 패키지 객체를 포함하고
- bin에는 실행 가능한 명령이 있습니다.
6) GO 언어로 사용자 지정 패키지를 사용하는 방법을 설명 하시겠습니까?
라이브러리를 별도의 get –table 프로젝트로 만들고 라이브러리가 내부 용인 경우 다음과 같이 코딩 할 수 있습니다.
- 프로젝트 디렉토리 아래에 라이브러리 파일이있는 디렉토리를 배치하십시오.
- 프로젝트를 구성하는 작업 공간의 루트에 상대적인 경로를 사용하여 라이브러리를 참조하십시오.
예를 들면
src /
myproject /
mylib /
mylib.go
. . .
main.go
이제 main.go 에서 myprojec / mylib 가져올 수 있습니다.
7) GOPATH 환경 변수가 무엇인지 설명하십시오.
GOPATH 환경 변수는 작업 공간의 위치를 결정합니다. Go 코드를 개발할 때 설정해야하는 유일한 환경 변수입니다.
8) GO에서 테스트를 수행하는 방법을 설명 하시겠습니까?
go test 명령과 테스트 패키지 로 구성된 경량 테스트 프레임 워크가 있습니다 .
테스트를 작성하려면 이름이 _testing으로 끝나는 파일을 만들어야합니다. 서명 func (t * testing.T)가있는 TestXXX라는 함수가 포함 된 Go. 테스트 프레임 워크는 이러한 각 기능을 실행합니다.
9) 문자열 유형이 무엇인지 설명하십시오.
문자열 유형은 문자열 값 세트를 나타내고 문자열 값은 바이트 시퀀스입니다. 일단 생성 된 문자열은 변경할 수 없습니다.
10) GO의 장점은 무엇입니까?
- GO는 매우 빠르게 컴파일됩니다.
- Go는 언어 수준에서 동시성을 지원합니다.
- 함수는 GO의 일급 객체입니다.
- GO에는 가비지 컬렉션이 있습니다.
- 문자열과 맵은 언어에 내장되어 있습니다.
11) GO에 내장 된 지원을 나열 하시겠습니까?
GO에서 사용 가능한 기본 제공 지원에는 다음이 포함됩니다.
- 컨테이너 : 컨테이너 / 목록, 컨테이너 / 힙
- 웹 서버 : net / http
- 암호화 : Crypto / md5, crypto / sha1
- 압축 : compress / gzip
- 데이터베이스 : 데이터베이스 / sql
12) GO에서 바둑 루틴이 무엇인지 설명하십시오.
고 루틴은 다른 기능과 동시에 실행할 수있는 기능입니다.
고 루틴을 중지하려면 고 루틴에 신호 채널을 전달합니다. 해당 신호 채널은 고 루틴을 중지하려는 경우 값을 푸시하는 데 사용됩니다. 고 루틴은 신호를 감지하는 즉시 해당 채널을 정기적으로 폴링하고 종료합니다.
Quit : = make (chan bool)
go func ( ) {
for {
select {
case <- quit:
return
default
// do other stuff
}
}
}()
// Do stuff
// Quit goroutine
Quit <- true
13) GO에서 여러 줄 문자열을 작성하는 방법을 설명하십시오.
GO에서 여러 줄 문자열을 작성하려면 원시 문자열 리터럴을 사용할 수 있습니다. 여기서 문자열은 큰 따옴표가 아닌 역 따옴표로 구분됩니다.
‘ line 1
line 2
line 3 ’
14) GO 프로그램에 전달 된 명령 줄 인수에 액세스하는 방법을 설명하십시오.
os .Args 변수를 사용하여 명령 줄 인수에 액세스 할 수 있습니다 . 예를 들면
Package main
import (
“fmt”
“OS”
)
func main () {
fmt.Println(len(os.Args), os.Args)
}
15) GO에서 포인터가 어떻게 표현되는지 설명하십시오.
GO에서 포인터는 * (별표) 문자 다음에 저장된 값의 유형을 사용하여 표시됩니다.
16) 어떻게 인쇄하지 않고 문자열을 포맷 할 수 있습니까?
인쇄하지 않고 문자열을 포맷하려면 명령을 사용해야합니다.
return fmt.Sprintf ( "at % v, % s", e.When, e.What)
17) GO의 배열이 C와 어떻게 다르게 작동하는지 설명하십시오.
GO Array 에서 C에서 작동하는 것과 다르게 작동합니다.
- 배열은 값이며 한 배열을 다른 배열에 할당하면 모든 요소가 복사됩니다.
- 함수에 배열을 전달하면 포인터가 아닌 배열의 복사본을받습니다.
- 배열의 크기는 유형의 일부입니다. 유형 [10] int 및 [20] int는 구별됩니다.
18) GO 인터페이스를 설명 하시겠습니까?
GO에서 인터페이스는 개체의 동작을 지정하는 방법입니다. 인터페이스는 "유형" 단어, 이름 및 키워드 인터페이스 를 사용하여 생성됩니다 . 인터페이스는 두 가지로 지정됩니다.
- 일련의 방법
- 또한 유형이라고도합니다.
19) Type assertion이 어떤 용도로 사용되고 어떻게 사용되는지 설명하십시오.
유형 변환은 GO에서 서로 다른 유형을 변환하는 데 사용됩니다. 유형 어설 션은 인터페이스 값을 가져 와서 지정된 명시 적 유형의 값을 검색합니다.
20) GO 언어에서 런타임에 변수 유형을 어떻게 확인할 수 있습니까?
런타임시 변수 유형을 확인하기 위해 GO에서 특수 유형의 스위치가 전용되며이 스위치를 유형 스위치라고합니다. 또한 Type Switch를 사용하여 인터페이스 값의 유형을 전환 할 수 있습니다.