본문 바로가기

Language

(16)
[Javascript] async와 await에 대하여 async와 await를 이용하면 Promise를 좀 더 편하게 사용할 수 있다. 즉 읽고, 쓰기 쉬운 비동기 코드 작성이 가능하다! async 함수 async 키워드는 function 앞에 위치한다. async function func() { return true; } function 앞에 async를 붙이면 해당 함수는 항상 Promise를 return함. Promise가 아닌 값을 반환하더라도 resolved promise로 값을 감싸 이행된 Promise가 반환되도록 함. async function func(){ return Promise.resolve(1); } func().then(alert) //1로 alert 표시. async function func(){ return 1; } func()..
[Javascript] Promise chaining 에 대하여 자바스크립트에서 순차적으로 수행되어야하는 비동기 작업은 promise chaining으로 해결할 수 있다. 아래는 promise chaining의 예시이다. new Promise((resolve, reject)=>{ setTimeout(()=>resolve(1), 1000); }).then((result)=>{ alert(result); //1 return result * 2; }).then(()=>{ alert(result); //2 return result * 2; }).then(()=>{ alert(result); //4 return result * 2; }); promise chaining은 result가 then 핸들러의 체인을 통해 전달된다는 점에서 착안. then 핸들러의 return값이 다..
[Javascript] Promise의 기본 Promise는 어떤 액션이 실행(Execute)되고 그 이후에 성공여부에 따라 특정한 액션(resolve/reject)을 할 수 있도록 하는 기능을 가지고 있다. 따라서 어떠한 액션의 실행을 완료한 후, 특정한 액션이 발생하도록 하기위해서 이 기능을 사용한다고 볼 수 있다.(비동기 처리 등) Promise를 만드는 방법 let promise = new Promise(function(resolve, reject) { // executor - 실행하길 원하는 액션 }); new Promise에 전달되는 함수 파라미터는 Executor(실행자, 실행 함수)라고 부른다. Executor는 Promise가 만들어질때 자동으로 실행되는 코드이다. Executor의 인수인 resolve와 reject는 콜백함수로 ..
[기초] Go 기초 정리 - 5 (Interface) Tour of Go를 기반으로한 Go의 기본 내용입니다. Interface Interface는 메소드의 시그니쳐 집합으로 정의된다. 인터페이스 유형의 값은 해당 인터페이스의 메소드를 모두 구현하는 타입이라면 어떤 유형이든 가질 수 있음. package main import ( "fmt" "math" ) type Abser interface { Abs() float64 } func main() { var a Abser f := MyFloat(-math.Sqrt2) v := Vertex{3, 4} a = f // a MyFloat implements Abser a = &v // a *Vertex implements Abser // In the following line, v is a Vertex (not *..
[기초] Go 기초 정리 - 4 (Method) Tour of Go를 기반으로한 Go의 기본 내용입니다. Methods 기본적으로 Go언어는 클래스를 가지지 않음. 하지만 비슷하게 타입의 메서드를 정의할 수 있다. 메서드는 특별한 receiver인자가 있는 함수인데, func 키워드와 메서드 이름 사이에 위치하고 있다. package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } //Vertex 구조체 타입에 Abs 메서드 func (v Vertex) Abs() float64 { //func와 함수명 사이에 리시버가 위치하고있다. return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v := Vertex{3, 4} fmt.Println(v.Ab..
구조체를 포함하는 구조체 구조체는 구조체의 필드로 다른 구조체를 포함하는 방법이 있다. type User struct { Name string ID string Age int } type VIPUser struct { UserInfo User //구조체를 포함하는 구조체 필드 VIPLevel int Price int } User는 일반 고객의 정보를 나타내고, VIPUser는 일반고객의 정보에 VIPLevel과 Price정보까지 포함한다. 따라서 위 struct와 같이 "다른 구조체를 포함하는 구조체"형태로 작성될 수 있다. 이와 같이 작성하게 되면 VIPUser에 별도로 Name, ID, Age 필드를 작성할 필요없이 UserInfo를 이용하면 된다. package main import "fmt" type User struct..
[기초] Go 기초 정리 - 3 (Pointer, Struct, Array, Slice, Range, Map, Function value, Function Closure) Tour of Go를 기반으로한 Go의 기본 내용입니다. Pointers 포인터는 값의 메모리 주소를 가지고 있다. *T 타입은 T값을 가리키는 포인터이고 Zero value는 nil. var p *int //p는 int값을 가리키는 포인터 & 연산자는 해당 변수의 포인터(주소)를 생성. i := 42 //int 타입 변수 i p = &i //int 포인터 변수 p * 연산자는 포인터가 가리키는 주소의 값. C언어와는 다르게, Go에서는 포인터 산술을 지원하지 않음. fmt.Println(*p) // 포인터 p를 통해 i 읽기 *p = 21 // 포인터 p를 통해 i에 값을 assign Structs (구조체) 구조체는 필드의 집합체. package main import "fmt" //struct 이름 ..
[기초] Slice의 사용과 내부 작동 방식 처음 Go언어의 Array와 Slice를 접했을 때, C에서 생각하던 개념과 다르다는 것을 확인할 수 있었다. Go에서는 Array와 Slice를 어떻게 구성하고 있는지 이해해보도록 하자. Arrays array는 기본적으로 변수의 이름, array의 크기와 array를 구성하는 요소의 type을 정의를 통해 확인할 수 있다. var arr [4]int // arr 변수이름, 배열의 크기, element type 기본적으로 array는 초기화를 별도로 해줄 필요는 없고, zero value로 알아서 채워주게 된다. var arr [4]int if arr[0] == 0 { fmt.Println("이미 난 초기화가 되어있어") } Go의 array는 값(value)이며, array의 변수는 배열 전체를 가리..