포인터 (Pointer) 1. 포인터의 선언 포인터 변수는 주소를 받아, 주소로 변수를 제어하는 기능이다. pointer가 남아있는 언어가 별로 없는데 golang은 포인터를 지원한다. 이는 굉장히 강력한 기능이고 golang에 있어서 큰 장점 중 하나라고 생각한다. 포인터에는 타입과 에스테리스크(*)가 필요하다. var 포인터변수 *포인터타입 = &변수 일반 변수 선언에서 *를 만 추가해서 사용하면 된다. 또한, 변수의 주소를 주소싶을 때는 &를 사용하면 된다. package main import "fmt" func main() { var intValue int = 10 var pIntValue *int = &intValue fmt.Print(*pIntValue) // 10 } 단축 선언을 사용하여 더..
함수 1. 함수 선언하기 우리는 이미 함수를 배웠다. main() 자체가 함수 코드이기 때문이다. 따라 이를 기저로 함수의 선언을 분석하면 다음과 같다 func 함수이름(매개변수 타입 , 매개변수 타입) 함수반환타입 { return 반환값 } 뭔가 굉장히 복잡해 보이지만, typescript나 kotlin을 배웠다면 그냥 매개변수의 타입 부분에서 ':' 을 뺀 것 뿐이다. 문자열을 받아서 3번 반복하고, 빈문자열인 경우 false를 반환하는 함수를 만들어보자 package main import ( "bufio" "fmt" "os" "strings" ) func main() { reader := bufio.NewReader(os.Stdin) value, err := reader.ReadStr..
1. 서론 저번 시간에는 메서드에 대해 배웠다. 만약 면접에서 REST API가 무엇인가요?라고 물으면 GET, POST, PUT, PATCH, DELETE 정도는 알아야 한다고 한다. 이번 시간에는 그 정도로 외워야 하진 않지만, 개발하다 보면 자연스럽게 알게 되는 404 에러 같은 걸 공부해보자. 참고로 모든 상태 코드를 적는 건 너무 귀찮은 일이기 때문에 핵심적인 부분만 다룰 예정이다. 2. 상태코드 분류 상태 코드는 모두 세 자릿수 숫자로 구성되는데, 그중 백의 자릿수에 따라서 큼지막한 기능들을 구분한다. 1xx (Informational) : 요청이 수신되어 처리 중 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx ..
1. 서론 저번 시간에는 HTTP의 기본적인 특징에 대해 살펴보았다. 대표적으로 무상태, 비연결성 등이 있었고, 이들은 지금까지 HTTP를 계속 사용할 수 있는 기반이 되었다. 필자는 1학년 때 함수와 메서드라는 단어를 처음 배우면서 게임 안의 캐릭터의 스킬이랑 매칭 시켜 이해했는데, HTTP도 비슷하다. 지금까지는 특성(스텟)에 대해 배웠다면, 스킬(행동)에 대해 공부해보자. 2. HTTP 요청 메서드의 종류 제목은 HTTP 메서드라고했지만, MDN Web Docs 에서는 요청 메서드라고 한다. 1) GET 리소스를 조회한다. 보통 쿼리를 통해 전달하는데, 앞 장에서 설명했듯이 이런 방식이다. (?key1=value1&key2=value2) 동작 방식 메시지 전달(GET 메서드 사용) -> 서버 도착 ..
컴파일, 조건문과 반복문 1. 컴파일 Go는 컴파일 언어이다. 따라서, 소스 코드를 컴파일하여 cpu가 실행할 수 있는 바이너리 포맷으로 변환해 주어야 한다. source.go --컴파일--> 바이너리 파일(실행파일) ---> 실행이에 따라 go를 실행할 수 있는 명령어는 다음과 같다. go build : 소스 코드를 바이너리로 컴파일한다. go run : 프로그램을 컴파일한 다음 즉시 실행한다. 컴파일된 실행 파일은 저장하지 않는다. go fmt : 소스 코드 형식을 go 표준 포맷으로 정렬한다. go version : 현재 설치된 go의 버전을 보여준다. vs code에서 자동으로 사용되지 않은 변수나, package를 제외시키는 것은 go 표준 포맷으로 정렬하는 것이다. vscode에서 코드를 작성..
이 내용은 스프링 공식 레퍼런스의 7.1.6. Welcome Page 항목의 내용을 참고하여 작성하였습니다. 1. Welcome Page 스프링 부트는 Welcome Page를 두 가지 방법으로 제공한다. 첫 번째 방법은 static content 공간에 index.html이라는 html 파일을 만들면 된다. 즉 프로젝트 생성 시 기본적으로 있는 resource 폴더에 있는 static 폴더에 index.html 파일을 읽게 된다. 실행 시 다음과 같이 잘 나오는 것을 확인할 수 있다. 두 번째 방법은 templates 폴더에 index.html을 만드는 경우이다. html 파일만 아래 파일로 옮겨주었다. 결과는 마찬가지로 잘 작동한다. 참고로 두 가지 방법은 우선순위가 있는데, 첫 번째 static 폴..
단순히 현재 저장하고 있는 어떤 객체의 목록을 불러오는 api를 만들고, 호출해보니 Postman에서 이런 에러가 떴다. 참고로 호출된 객체는 다음과 같다. @Entity @Table(name = "orders") @Getter @Setter public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = LAZY) @JoinColumn(name = "member_id") private Member member; } Order라는 객체 목록을 불러왔고, 이 안에는 분명 "ByteBuddyInterceptor"라는 자료형이 없는데 (다른 데에도 선언하지 않았다.) 왜 이런 타입이 맞지 ..
Go? GO! 1. Go는 무엇이며? 왜 배워야할까?? 필자는 4G/5G 통신 서버 개발자라 속도에 민감해 c/c++만을 사용한다. 그런데 요즘들어 여러 통신 서버 개발자 분들이 golang을 사용하는 것을 보았고 좋아보여서 공부해보려고 한다. 사실 필자도 잘모르겠다. 그냥 로고가 귀여워서 공부하려고한다. 힙찔이 2. 어떻게 다운받으면 될까? https://golang.org/dl/ 여기에 들어가서 자신의 플랫폼에 맞는 다운로드 파일을 설치하면 된다. 금방 설치되서 아주 좋다. 3. hello world 출력해보기 개발자들 대부분이 하는 말 중에 그 언어의 "hello world"까지 해보았다면 절반은 아는 것이다. 라는 띵언이 있다. 물론 이 말에 죽자고 달려드는 -찐- 들도 있지만, '시작이 ..