반응형

Golang/Basic 9

Golang if문에 세미콜론(;)

Go언어에서 if문 사용 시 세미콜론을 사용할 수 있다. 예를 들면 다음과 같다. 아래의 두 예제는 같은 의미이다. 첫번째 예제) if v, err := Read(); err == nil { // do something with v, because Read() did not // had an error (err) } 두번째 예제) if v, err := Read(); err == nil { // do something with v, because Read() did not // had an error (err) } 두 문법의 결과는 같지만 차이점은 첫 번째 예제에서는 v와 err의 범위는 if {}블록으로 제한된다. 두 번째 예제에서는 v와 err은 선언된 블록에 속해 있다. 즉, if {}에 속해있지 ..

Golang/Basic 2023.03.04

Golang 헷갈리는 문법 복습 - interface

인터페이스가 어떤 용도로 사용되는지, 왜 이런 식으로 만들어 졌는지에 대한 이해가 선행되면 정의를 이해하는 게 훨씬 쉽다. 그래서 우선 인터페이스가 왜 쓰이는지에 대해 설명 후, 구체적인 것에 대해서는 이후에 설명하도록 하겠다. 1. Interface를 사용하는 이유 Go 언어는 타입에 민감하다. 함수의 경우 마찬가지다. 함수는 정해진 타입의 매개변수만 받고, 정해진 타입에 맞게 연산을 하고, 정해진 타입에 맞게 결과를 반환한다. 하지만 여러타입에 대해 적용할 수 있는 함수를 만들어야 할 때도 있다. Go 언어에서 이러한 함수를 만들기 위해서는 각 타입별로 적용 가능한 함수들을 만들고, 이를 모두 합쳐서 하나의 큰 함수로 만드는 것이다. 하지만 여기서는 막히는 부분이 하나 있다. Go언어는 매개변수를 받..

Golang/Basic 2022.02.19

Golang 헷갈리는 문법 복습 - 배열과 슬라이스

배열 Go언어에서 배열은 길이가 고정되어 있고, 인덱스는 0부터 시작한다. var a [5]int // int 형이며 길이가 5인 배열 선언 a[2] = 7 // 배열의 세 번째 요소에 7 대입 fmt.Println(a) // [0 0 7 0 0] var a [5]int = [5]int{1, 2, 3, 4, 5} // int형이며 길이가 5인 배열을 선언하고 초기화 var b [5]int{1, 2, ,3, 4, 5} // 배열을 선언할 때 자료형과 길이 생략 c := [5]int{1, 2, 3, 4, 5} // 배열을 선언할 때 var 키워드, 자료형과 길이 생략 배열의 크기에 ...을 사용하면 초기화할 값의 개수에 따라 자동으로 크기가 설정된다. a := [5]int{1, 2, 3, 4, 5} // 배..

Golang/Basic 2022.02.19

Zero 부터 시작하는 Golang - 기본문법3

에러 Go는 내장 타입으로 error 라는 인터페이스(Interface) 타입을 갖는다. Go 에러는 이 error 인터페이스를 통해서 주고 받게 되는데, 이 인터페이스는 다음과 같은 하나의 메소드를 갖는다. 개발자는 이 인터페이스를 구현하는 커스텀 에러 타입을 만들 수 있다. type error interface { Error() string } 에러 처리 함수가 결과와 에러를 함께 반환한다면, 이 에러가 nil 인지를 체크해서 에러가 없는 지를 확인할 수 있다. 아래의 예제에서 os.Open() 함수는 func Open(name string) (file *File, err error)와 같은 함수 원형을 갖는 것으로 첫 번째는 File 포인터를 두 번째는 error 인터페이스를 반환한다. 그래서 이 ..

Golang/Basic 2022.02.19

Zero 부터 시작하는 Golang - 기본문법2

Go 패키지(Package) Go언어는 패키지를 통해 코드의 모듈화, 재 사용 기능을 제공한다. Go언어는 패키지를 사용해서 작은 단위의 컴포넌트(Component)를 작성하고, 이러한 작은 패키지를 활용하여프로그램을 작성할 것을 권장한다. Go언어에 사용하는 표준 패키지는 https://golang.org/pkg/ 에 자세하게 설명되어 있다. Main 패키지 일반적으로 패키지는 라이브러리로서 사용되지만, 'main' 패키지는 Go 컴파일러(Compiler)에 의해 특별하게 인식된다. 패키지 명이 main인 경우, 컴파일러는 해당 패키지를 공유 라이브러리가 아닌 실행(executable) 프로그램으로 만든다. 그리고 이 main 패키지 내의 main() 함수가 프로그램의 시작점인 Entry Point가 ..

Golang/Basic 2022.02.13

Zero 부터 시작하는 Golang - 기본문법1

클로저(Closure) 클로저는 함수 안에서 함수를 선언 및 정의할 수 있고, 바깥쪽 함수에 선언된 변수에도 접근할 수 있는 함수를 말한다. 바깥 함수가 변수와 자기 자신(함수)을 둘러싸고(close over)있다고 해서 클로저(closure)라고 한다. 아래의 예제는 nextValue() 함수는 int를 반환하는 익명 함수(func() int)를 반환하는 함수이다. Go언어에서 함수는 일급 함수로서 다른 함수로 부터 반환되는 반환 값으로 사용될 수 있다. 그런데 여기서 이 익명 함수가 그 함수 바깥에 있는 변수 i를 참조하고 있다. 익명 함수 자체가 지역 변수로 i를 갖는 것이 아니기 때문에(만약 그렇게 되면 함수 호출 시 i는 항상 0으로 설정된다.) 외부 변수 i가 상태를 계속 유지하는 값을 계속 ..

Golang/Basic 2022.02.13

Zero 부터 시작하는 Golang - 기본문법

변수 변수는 Go 키워드 var를 사용하여 선언한다. var 키워드 뒤에 변수 명을 적고, 그 뒤에 변수 타입을 적는다. 예를 들어, 아래는 a라는 정수(int) 변수를 선언한 것이다. var a int 변수 선언문에서 변수 초기 값을 할당할 수도 있다. 즉, float32 타입의 변수 f 에 11.0 이라는 초기 값을 할당하기 위해서는 아래와 같이 쓸 수 있다. var f float32 = 11.0 선언된 변수는 그 뒤의 문장에서 해당 타입의 값을 할당할 수 있다. a = 10 f = 12.0 만약 선언된 변수가 Go 프로그램 내에서 사용되지 않는다면, 에러를 발생 시킨다. 따라서 사용되지 않는 변수는 삭제하도록 한다. 동일한 타입의 변수가 여러 개 있을 경우, 변수들을 나열한 후 마지막에 타입을 한번..

Golang/Basic 2022.02.13

Zero 부터 시작하는 Golang - 개요, 설치

고퍼(마스코트)의 기원 : https://blog.golang.org/gopher The Go Gopher - The Go Programming Language The Go Gopher Rob Pike and Andrew Gerrand 24 March 2014 The Go gopher is an iconic mascot and one of the most distinctive features of the Go project. In this post we’ll talk about its origins, evolution, and behavior. About 15 years ago—long before the go.dev 공식 사이트 : https://golang.org/ The Go Programming ..

Golang/Basic 2022.02.08
반응형