syntax-go

Tag: syntax-go

메서드

Go는 클래스가 없다. What? Go는 객체지향언어가 아니란 말인가? 미리 놀랄 필요는 없다. Go는 클래스가 없는 대신 보다 유연한 방식을 제공한다. 먼저 객체의 멤버 함 ...

호출 연기

Defer는 호출을 연기하는 Go의 독특한 구문 중 하나이다. 호출을 연기한다는 것이 무슨 의미인지는 다음 C 코드를 예로 알아보자. #include <stdio.h>#include <stdlib.h> #define BUF_SIZE 512 int main(int argc, char *argv[]) { FILE* ...

배열이나 슬라이스는 저장된 각 요소에 접근하기 위한 키로 숫자를 사용하는 자료구조이다. 반면 맵은 키로 숫자가 아닌 다양한 타입을 사용할 수 있다. Python의 dict ...

슬라이스

슬라이스는 앞서 살펴본 배열과 연관성이 높은 또 하나의 타입이다. 슬라이스의 특징을 간략히 요약하면 다음과 같다. 기반이 되는 배열, 문자열 또는 다른 슬라이스의 요 ...

배열

배열 역시 타입의 일종이다. 배열 작성 규칙은 다음과 같다. ArrayType = "[" ArrayLength "]" ElementType . ArrayLength = Expression . ElementType = Type . ArrayLength에 대해서는 두 가지 단서가 붙는데, 음수일 수 ...

함수 타입과 익명 함수

함수에서는 기본적인 함수 선언 및 호출 방법에 대해서 다뤘다. 해당 글을 시작할 때 함수를 타입으로 사용할 수도 있다고 언급했는데, 이 내용은 구조체 기초에서도 나온다 ...

구조체 기초

구조체는 이름을 갖는 엘리먼트들을 묶어 놓은 타입이다. 당연한 얘기를 뭐 대단한 듯 하나 싶겠지만 앞서 다뤘던 기본 타입, 포인터, 함수, 아직 다루지 않은 배열, 슬라 ...

함수

함수를 타입으로 사용하는 등 여러가지 복잡한 용법이 있지만 이 글에서는 기본적인 함수의 선언(declaration)과 정의(definition)에 대해 ...

for 반복문

시작하기에 앞서 한 가지 중요한 사실을 미리 밝히고 넘어가자. Go에는 `while`이 없다! 반복문은 `for` 하나로 모두 작성한다. for 반복문의 작성 규칙은 아래와 같 ...

switch 조건문

Go의 switch 조건문은 C/C++이나 Java에 비해 사용법이 굉장히 다양하다. 여기서는 기본 사용법에 대해서만 우선 알아보자. Go의 switch 작성 규칙은 다음과 같다. ...

if 조건문

Go의 if 조건문은 조건에 괄호(())를 쓰지 않아도 된다는 점을 제외하면 C/C++, Java 등 언어의 그것과 유사하다. 물론 조건에 괄호를 쓰는 것도 가능하며, 복잡한 조건인 경 ...

포인터

Go의 포인터는 생김과 사용법이 C의 그것과 매우 유사하다. 먼저 포인터에 대한 규정을 살펴보면 다음과 같다. PointerType = "*" BaseType . BaseType = Type . C에서와 같이 타입 앞에 aste ...

임포트

외부 패키지에서 제공하는 기능을 사용하기 위해 Go에서는 import 명령을 사용한다. 작성 규칙은 다음과 같다. ImportDecl = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) . ImportSpec = [ "." | PackageName ] ImportPath . ImportPath = ...

상수

상수를 선언하는 방법은 var 대신 const를 사용한다는 점을 제외하면 변수를 선언하는 방법과 유사하다. ConstDecl = "const" ( ConstSpec | "(" { ConstSpec ";" } ")" ) . ConstSpec = IdentifierList [ [ Type ] "=" ExpressionList ] . ...

타입

Go의 타입 작성법은 다음과 같다. Type = TypeName | TypeLit | "(" Type ")" . TypeName = identifier | QualifiedIdent . TypeLit = ArrayType | StructType | PointerType | FunctionType | InterfaceType | SliceType | MapType | ChannelType . 나머지는 차차 보도록 하고, 여기서는 predefined identifier 중 ty ...

변수

Go에서 변수 선언 규칙은 다음과 같다. VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) . VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) . IdentifierList = identifier { "," identifier } . ExpressionList = Expression { "," Expression } . 복잡해 보이지만 하나 ...

패키지

모든 Go 프로그램은 패키지들로 구성된다. 프로그램은 main 패키지에서 시작한다. 관례상 패키지 이름은 임포트 경로의 마지막 엘리먼트로 한다. 패키지 작성 규정(cl ...

세미콜론

Go는 C/C++이나 Java처럼 세미콜론(;)을 사용하는 언어이다. 하지만 소스코드에서 세미콜론을 볼 일은 거의 없다. Go lexer가 몇 가지 간단한 규칙 ...

주석

// single line comment /* multi line comment */

시작 Go

Go 토픽은 제가 Go 언어를 공부하면서 정리한 내용들입니다. 그간 주로 C/C++을 사용해 왔던지라 ‘그에 비해 Go는 이렇더라’라는 내 ...