본문 바로가기

Golang23

chapter3(9) method - signature 개인적으로 method랑 function은 구분해야 한다 생각하는데 책에 method라 나와있다. 그래서 그냥 method라 하겠다. Go는 Java와 달리 method를 아무 곳에서든 선언하고 참조할 수 있다. (Java는 Class나 interface scope 하위에서만 선언이 가능함) Java에서는 접근 제한자(access modifier), 반환 타입, 함수명, parameter(파라미터), 예외처리, 이런 순서로 선언한다. 하지만 오늘 주제는 signature이기 때문에 다 필요 없고 함수명과 parameter에 초점을 맞추면 된다. Go에서 함수를 선언하는 방법은 func 예약어로 시작하여 중괄호({})로 끝난다. 보통 중괄호를 scope(스코프)라고 말하니 이제부터 중괄호를 scope라 하.. 2022. 2. 11.
chapter3(8) primitive type - interface{} and nil 책에는 interface{} 타입을 소개하는 정도의 분량을 갖고 있다. 예제도 2개뿐.... 그래서 궁금한 것들을 스스로 예제 코드로 만들어 포스트 하겠다. interface{} Go언어도 Java의 Object class와 같이 최상위 타입이 존재한다. 이전 글에서 배열 변수 선언 시 [5]int는 대괄호([]) 까지가 타입이라고 말했었는데 interface 또한 중괄호({}) 까지가 타입이다. interface{} 변수의 선언 방법은 명시적 선언뿐인데 초기화 영역에 어떠한 값이든 초기화가 가능하다. 위 사진과 같이 모든 자료형을 저장할 수 있다. Go는 타입을 엄청 강하게 검사하는데 a변수에 b변수를 대입할 때 오류가 발생할까? 가능하다. 그럼 interface{} 타입인 변수를 묵시적으로 변수 선언.. 2022. 2. 6.
chapter3(7) primitive type - array(수정) array 프로그래밍 언어에서 array라 하면 보통 정적 배열(static array)을 의미한다. 정적 배열은 배열 자체로 확장 또는 축소가 안된다. 정적 배열의 반대는 동적 배열인데 동적 배열은 정적 배열과 같지만 대부분의 프로그래밍 언어는 동적 배열을 API [Application Programming Interface]로 지원하기 때문에 개발자가 직접 배열을 확장하거나 축소하는 코드를 작성하지 않고 사용할 수 있다. Java는 ArrayList라는 Class를 API로 지원하고 Go는 slice라는 API로 지원한다. (slice라는 타입이 있는 게 아니고 array선언 방식과 내장 API을 사용하는 거다.) 오늘은 array를 기준으로 포스트 할 예정이고 slice를 포스트 할 때 array의.. 2022. 2. 2.
chapter3(4) primitive type - wrap around wrap around는 엄청 쉽게 이해할 수 있는 내용인 거 같지만 Go를 공부하면서 처음 접한 이론?이라 단독 포스트를 하게 됐다. 이번에 공부하면서 처음 알게 된 것부터 wrap around까지 천천히 최대한 자세히 서술해보겠다. 원래 알고 있던 2진수를 조금 더 깊고 자세하게 알게 되는 계기가 됐는데 그중 msb와 lsb가 뭔지부터 설명하겠다. lsb [least significant bit] bit의 맨 오른쪽에 있는 bit를 뜻하고 연산의 시작점이라 할 수 있다. msb [most significant bit] bit의 맨 왼쪽에 있는 bit를 뜻하고 signed int는 msb가 0 이면 +(plus), 1 이면 -(minus)를 표현하고 unsigned int는 2^n으로 사용된다. wrap.. 2022. 1. 30.