프로그래밍 언어

Go 의 함수에는 'naked return' 이라는 것이 있다. 이것의 의미는 return 키워드에 굳이 반환 할 변수를 명시하지 않아도 됨을 뜻한다. part 1 에서 길이와 영문 대문자 변환 결과를 반환하는 함수를 다시 작성해보자. package main import ( "fmt" "strings" ) func lenAndUpper(name string) (length int, uppercase string) { length = len(name) uppercase = strings.ToUpper(name) return } func main() { totalLength, upper := lenAndUpper("nimkoes") fmt.Println(totalLength, upper) } part 1 의..
Go 에서 함수는 아주 쉽다. 'func' 키워드를 사용해서 선언한다. 두 수를 전달 받아 곱한 결과를 반환하는 'multiply' 를 작성해보자. package main import "fmt" func multiply(a, b) { return a * b } func main() { fmt.Println(multiply(2, 2)) } 그런데 위와 같이 작성하고 실행하면 많은 오류를 만나게 된다. 그 이유는 Go 도 Java 와 마찬가지로 함수를 선언할 때 전달받을 타입과 반환 타입을 정해줘야 한다. 그래서 다음과 같이 고쳐서 작성해야 한다. package main import "fmt" func multiply(a int, b int) int { return a * b } func main() { f..
Go 에서 상수는 'const' 키워드를 사용해서 선언할 수 있다. const name string = "nimkoes" 특이한게 있다면, 타입을 명시하지 않으면 'untyped' 라는게 붙고, 값을 토대로 추론한 타입도 같이 명시 되었다. 그리고 타입을 명시하면 'untyped' 가 사라진다. 또 다른게 있다면, 타입을 변수의 뒤에 명시한다. 지금까지는 보통 타입을 먼저 쓰고, 그 타입의 값을 담을 변수의 이름을 작성했는데 Go 에서는 그 순서가 반대다. 약간 "문자열 타입의 변수 name 입니다." 라고 하던게 "name 변수 입니다. 근데 이제 string 타입인" 이라고 하는 느낌이다. 변수 선언은 'const' 대신 'var' 을 쓴다. var nickname string = "nickname"..
앞서 Hello World 문자열을 출력하는 코드를 Go로 작성해 보았다. package main import "fmt" func main() { fmt.Println("Hello World!") } fmt 를 직접 import 한 적이 없는데, IDE 에서 알아서 자동으로 추가해 주었다. fmt 는 Go 가 가지고 있는 패키지 중 하나로 formatting 을 위한 package 이다. import 관련해서 javascript 의 경우 function 을 export 해주고 싶은 경우 모듈을 export 하겠다고 명시해 주어야 한다. Go 에서는 function 을 export 해주고 싶다면 function 을 영문자 대문자로 시작하면 된다. 정말 그런지 확인해보기 위해 현재 프로젝트의 최상위에 'so..
Go 를 설치하기 위해 다운로드 사이트에 접속 한다. 'Download Go' 버튼을 클릭한다. OS 별로 설치 파일이 다른데 현재 윈도우 플랫폼을 사용하고 있기 때문에 'Microsoft Windows' 를 클릭 했다. 페이지가 이동 하면서 자동으로 다운로드가 시작 되었다. 다운받은 msi 프로그램을 실행해서 Go를 설치 했다. 강의 에서는 C 루트 디렉토리 하위에 바로 'go' 라는 패키지(폴더)를 만들었는데 설치 프로그램의 기본 경로가 'Program Files' 여서 그냥 냅두기로 했다. 설치가 끝나면 아래와 같이 C:\Program Files\Go 경로 하위에 아래와 같은 것들이 새로 생긴것을 확인할 수 있다. 그리고 강의의 실습을 하기 위해 만들라고 한 폴더들을 만들었다. 강의 내용대로라면, ..
자바에는 8대 자료형이라 불리는 기본 자료형이 있다. 이 기본 자료형을 특별하게 분류하는 이유는 클래스가 아니기 때문이다. 클래스가 아니라는 것은 다른 말로 참조타입(reference type)이 아니라는 뜻이다. 당장 적당한 예시가 떠오르지 않지만, 이 기본 타입들에 대해 객체로 표현해야 하는 경우가 있는데 문제는 참조타입이 아니기 때문에 객체를 생성하지 못하는 문제가 있다. 그래서 Java에는 Wrapper(래퍼) 라고 부르는 클래스가 존재한다. 이 클래스들은 기본 자료형을 참조타입으로 객체를 생성할 수 있도록 해준다. 기본 타입 (primitive type) 래퍼클래스 (Wrapper class) byte Byte short Short int Integer long Long float Float d..
# 자바의 람다식에 대해 학습하세요. # 학습할 것 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식을 사용하기에 앞서 익명 구현 객체라는 것에 대해 알면 좋다. 익명 구현 객체는 인터페이스나 클래스의 객체를 생성해서 사용할 때, 재사용하지 않는 경우 보통 사용한다. 예를 들어 보자. 특정 인터페이스를 사용하기 위해 이 인터페이스를 상속 받은 클래스를 구현하는 방법이 있다. package me.xxxelppa.study.week15; public class Exam_001 { public static void main(String[] args) { Exam_001_Sub exam_001_sub = new Exam_001_Sub(); exam_001_sub.do..
# 자바의 제네릭에 대해 학습하세요. # 학습할 것 제네릭 사용법 제네릭 메소드 만들기 제네릭 주요 개념(바운디드 타입, 와일드 카드) Erasure 제네릭을 사용하는 방법에 대해 정리해보기 전에 왜 필요한지에 대해 알면 언제 사용할지 도움이 될 수 있다. 예전에 관련해서 정리했던 링크를 첨부한다. java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 1편, 왜 제네릭 링크를 추가 했지만, 그래도 간략하게 제네릭이 왜 필요한지 간단하게 정리해보려 한다. 제네릭을 사용하는 이유에는 흔히 알고있는 컴파일 타임에 타입 체크를 하기 위함이나 타입 캐스팅을 제거하여 프로그램 성능 향상을 위해서 이다. 하지만 보다 궁극적인(?) 목적은 중복코드의 제거에 있다고 생각 한다. 예를 들어 다음과 같이 List..
nimkoes
'프로그래밍 언어' 카테고리의 글 목록 (4 Page)