본문 바로가기

프로그래밍 언어

(5)
[Things of Go] 얕은 복사와 깊은 복사 해당 글은 독자가 Go언어의 기본적인 문법과 포인터 혹은 참조 자료형의 개념에 대해 알고 있다고 가정한다. 변수 복사 프로그래밍 언어를 어느 정도 다룰 줄 알게 되면 항상 유의해야 하는 부분이 있다. 바로 변수의 복사이다. 변수의 복사라고 거창하게 말했지만 한 변수값을 다른 변수값에 할당하는 것이다. var a int = 3 var b int = a //복제 위에 예시로 든 int형같이 기본 자료형은 위와 같이 할당문으로 복사해도 별 문제가 되지 않는다. 그러나 자료형이 참조형일 때는 이야기가 다르다. 예시를 들기 위해 다음의 클래스를 준비했다. package main import ( "bytes" "encoding/gob" "fmt" ) type Pos interface { Print() Copy() ..
[Things of Go] 개인적으로 생각하는 Go언어의 단점 Go언어를 소개하는 글에서는 보통 Go언어의 장점을 강조한다. 여러 언어를 비교하는 글에서는 Go언어의 장점과 단점을 모두 설명하지만 집중적으로 다루지는 않는다. 물론 모든 글이 그렇다는 것이 아니라 대개 그렇다는 것이다. 그저 선택과 집중의 문제일 뿐이다. 필자는 Go언어를 좋아한다. 하지만 코드를 작성하다 보면 불편할 때가 있다. 이 글에서는 필자가 코드를 직접 작성하면서, 혹은 생각해본 Go언어의 단점에 대해 끄적여보겠다. 이번 글은 필자의 주관이 잔뜩 들어가 있기에 비판적으로 봐주기를 바란다. 마지막으로 필자는 프로그래밍 언어 중에서는 Go언어를 가장 좋아한다.😉 1. 타 언어들과의 객체지향에 대한 관점의 차이 Go언어는 객체지향 언어이다. 그리고 프로그래밍 언어들 중에 흔하디 흔한 것이 객체지향..
[Things of Go] Go언어의 객체지향 모델 - 응용편 지난 글에서는 객체지향 프로그래밍을 하기 위한 기본적인 요소들에 대해 알아보았다. 이번 글에서는 이 요소들을 이용해 어떻게 객체지향 프로그래밍을 할 수 있는지 알아보겠다. 그 전에... 패키지 내의 함수 및 변수 호출은 인스턴스의 그것들을 호출하는 것과 유사하다. 그리고 이전 글에서 잠깐 언급했지만 Go언어의 접근제한은 패키지 단위로 이루어진다. 즉, Go언어에서의 패키지는 하나의 객체로 볼 수 있다. 그리고 캡슐화(은닉성)의 관점에서 패키지를 객체로 취급하는 것이 바람직하다 콘솔에서 패키지를 받아보자. go get github.com/simp7/pracOOPFromGo 받은 파일은 이전 글의 객체들(Dog, Cat, Animal)을 패키지로 묶은 것이다. 이후 예제에서 사용될 예쩡이다. Go언어에서의 ..
[Things of Go] Go언어의 객체지향 모델 - 기초편 이 글은 독자가 객체지향과 포인터에 관한 기본적인 지식이 있다는 가정 하에 작성되었다. Go언어와 객체지향 현재 인기있는 대부분의 프로그래밍 언어가 그렇듯이 Go언어는 객체지향 언어이다. 다만, 보통 객체지향에 입문하는 데에 쓰는 파이썬, 자바, 혹은 C++하고는 모습이 조금 다르다. Go언어의 설계 목표가 직관성, 단순성, 명료성, 효율성이다. 이런 목표를 달성하기 위해 다른 언어들에 비해 키워드가 적고 문법이 살짝 다르다. 클래스 정의 Go언어에는 class 키워드가 없다. Go언어는 struct, 즉 구조체를 이용해서 클래스를 정의한다. 구조체는 다음과 같이 선언한다. type Dog struct { name string } 'string형 변수 name을 가지는 구조체를 Dog라 칭한다' 정도로 ..
[Go with TDD] 깔끔하게 go test의 테스트케이스를 짜는 법 [Go with TDD] TDD를 위한 go test 기초 [Go with TDD] TDD란? 소프트웨어 공학, 개발 방법론 등에 관해 조금이라도 알고 있다면 TDD(Test-driven development, 테스트 주도 개발)라는 용어를 들어봤을 것이다. 잘 아는 사람도 많겠지만 모르는 사람�� simplear.tistory.com 더 간단하게, 더 명료하게 이전 글의 방식으로 테스트 케이스를 작성해도 TDD를 적용하는 데에는 크게 문제가 없다. 하지만 기능이 단순한 함수임에도 테스트 코드가 길고 반복되는 부분이 많다. 이번에는 이 테스트 함수를 다듬어보도록 하겠다. 1. 반복문 같은 함수를 반복적으로 호출하면 먼저 반복문을 생각해봐야 한다. 반복문을 작성하는 법은 간단하다. 반복되는 부분은 반복문에..