백엔드, 기타/Golang 8

Golang 3. 2)인터페이스

1. 인터페이스 type 인터페이스명 interface {} 예제) Printer 인터페이스 type MyInt int //'type 새_자료형' 형식으로 기존 자료형을 새 자료형으로 정의 func (i MyInt) Print(){ fmt.Println(i) } type Rectangle struct { width, height int } func (r Rectangle) Print() { fmt.Println(r.width, r.height) } type Printer interface { Print() } func main() { var i MyInt = 5 r := Rectangle{10, 20} var p Printer //インタフェース宣言 p = i p.Print() p = r p.Print()..

Golang 3. 1)포인터와 구조체

1. 포인터 var ptrValue *int 과 같이 선언만 한 빈 포인터형 변수는 바로 사용할 수 없다. new 함수로 메모리를 할당해서 사용한다. 선언 var numPtr *int = new(int) //포인터 선언 → new 함수로 메모리에 공간 할당 *numPtr = 1 //*를 사용해 포인터 역참조 하여 값 1 대입 fmt.Println(*numPtr) //1 출력 변수 앖에 &를 붙이면 해당 변수의 메모리 주소를 뜻한다. var num int = 1 var numPtr *int = &num fmt.Println(numPtr) //동일한 메모리 주소 출력 fmt.Println(&num) //동일한 메모리 주소 출력 일반 자료형과 포인터 변수의 매개변수의 영향 비교 1) 일반 자료형인 매개변수 n..

Golang 2. 함수 2)클로저(closure), 지연호출(defer), 패닉과 복구(panic and recover)

1. 클로저(closure) 클로저(익명함수) 안에서 바깥에 있는 변수에 접근하기 예시 y=ax-b함수 func main() { a, b := 4, 9 f := func(x int) int{ return a*x - b } y := f(5) fmt.Println(y) // 11출력 } 클로저를 리턴하는 함수 형태 - func 함수명() func(파라미터명 자료형) 리턴값_자료형 예시 y=ax-b func calc() func(x int) int{ a,b := 4,7 return a*x-b } func main() { f := calc() /* calc함수를 실행하여 리턴값으로 나온 클로저를 변수에 저장 * 만약 일반 함수를 변수 f에 대입시킬 경우 f := calc형태가 된다. */ fmt.Println(..

Golang 2. 함수 1)함수의 리턴값/ 변수,슬라이스,맵에 함수 대응하기/클로저

1. 리턴값 func sumAndDiff(a int, b int) (int, int){ return a+b, a-b } func main() { sum, diff := sumAndDiff(8, 20) fmt.Println(sum, diff) } func sumAndDiff(a int, b int) (sum int, diff int){ sum = a+b diff = a-b return } func main(){ add, minus := sumAndDiff(44, 33) fmt.Println(add, minus) } //가변인자 사용하기 func sum(n ...int) int{ total := 0 for _, value := range n{ total += value } return total } func..

Golang 1. 기본 문법 2)배열, slice, map

1. 배열 선언 //3가지 모두 가능 var a [5]int = [5]int{11,22,33,44,55} var a = [5]int{11,22,33,44,55} a:= [5]int{11,22,33,44,55} ...를 사용하면 초기화할 배열 요소(값)의 개수에 따라 자동으로 크기 설정 x := [...]string{"train", "airplane", "car", "bus"} //초기화 할 요소가 4개이며 ...에따라 배열 크기는 자동적으로 4로 설정된다. 2. 슬라이스 선언 var a []int = make([]int, 5) //슬라이스 길이 : 5 var b = make([]int, 5) c := make([]int, 5) var d = make([]int, 5, 10) //길이가 5이고 용량이 10..

Golang 1. 기본 문법 1)타입, for, switch문

프로그래밍 기술은 빠르게 발전하며 개발자는 그에맞춰 새로운 기술을 꾸준히 습득해야 한다. 한국은 전자정부프레임워크, Java공화국이다. 네이버, 카카오를 비롯한 대기업 뿐만 아니라 SI회사에서 파견을 나가도 대다수 Java 스프링으로 개발한다. 일본에서도 Java 수요가 높으며 할줄알면 먹고사는데 지장에 없다. 엔터프라이즈 형에 적합한 자바보다 새로운 언어에 도전하고 싶어졌다. 더 간결하고 빠른 언어로 웹서버를 구축해보고 싶다. 몇 달 전부터 Golang이 눈에 들어왔다. do, while이 없고 단순한 문법. 클래스가 없음. C, C++의 포인터가 있어 메모리 레이아웃이 가능하며 자바처럼 가비지 콜렉터가 있다.(이에 대한 장, 단점이 존재) 병행처리(conccurency), 고루틴, 패닉 등등 다양한 ..