본문 바로가기

Golang/Study13

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(6) primitive type - rune and string rune Go에는 특이한 자료형이 있다. rune이라는 자료형인데 책에는 문자를 표현하는 자료형이라고 소개하면서 정확하게는 유니코드(unicode)의 코드 포인트를 나타내는 "특수한 정수 자료형"이다.라고 쓰여 있다. 그래서 rune은 int32의 별명으로 정의돼 있어 음수도 표현할 수 있다. byte type처럼 rune type 또한 숫자를 저장하든 문자를 저장하든 타입은 int32이다. 그렇다고 int32와 rune 타입이 다른 부분이 있냐? 물으면 없다... 심지어 함수의 시그니쳐에서 rune이라 명시됐어도 int32를 받아준다.... 그냥 rune type은 개발자가 이해하기 편하게 가독성 측면으로 만들어 놓은 것 같다. rune type의 값으로 작은따옴표('A')에 문자 한 개를 넣어 사용할.. 2022. 2. 1.