728x90

go 38

[Go] 기초 - 클로저 (Closure)

1. 클로저 - Go 언어에서 함수는 Closure로서 사용될 수도 있다. - Closure는 함수 바깥에 있는 변수를 참조하는 함수값(function value)을 말한다. 이 때 함수는 바깥의 변수를 마치 함수 안으로 끌어들인 듯이 그 변수를 읽거나 쓸 수 있게 된다. package main func nextValue() func() int { i := 0 return func() int { i++ return i } } func main() { next := nextValue() println(next()) // 1 println(next()) // 2 println(next()) // 3 anotherNext := nextValue() println(anotherNext()) // 1 다시 시작 ..

개발/Go 2022.07.19

[Go] 기초 - 익명함수

1. 익명함수 - 함수명을 갖지 않는 함수 - 일반적으로 익명함수는 그 함수 전체를 변수에 할당하거나 다른 함수의 파라미터에 직접 정의되어 사용 func main() { sum := func(n ...int) int { //익명함수 정의 s := 0 for _, i := range n { s += i } return s } result := sum(1, 2, 3, 4, 5) //익명함수 호출 println(result) } - Go로 개발하면서 익명함수는 거의 사용을 안했던 것 같다. 2. 일급함수 - Go 프로그래밍 언어에서 함수는 일급함수로서 Go의 기본 타입과 동일하게 취급되며, 따라서 다른 함수의 파라미터로 전달하거나 다른 함수의 리턴값으로도 사용될 수 있다. 즉, 함수의 입력 파라미터나 리턴 파..

개발/Go 2022.07.18

[Go] 기초 - 함수

1. 함수 - Go에서 함수는 func 키워드와 함수명을 사용해서 정의한다. - Java의 메소드와 비슷하다. - 함수명 뒤에 괄호 안에 받을 파라미터를 적는데, 파라미터명 + 타입 순서로 적어준다. func main() { msg := "Hello" say(msg) } func say(msg string) { println(msg) } - msg에 "Hello"를 담아 say함수에 전달했고, say함수에서 msg(string)로 받아서 출력했다. 2. 파라미터 전달 방식 - Go에서 파라미터를 전달하는 방식은 Pass By Value와 Pass By Reference로 나뉜다. (1) Pass By Value 위의 [1. 함수]의 예제에서는 msg의 값 "Hello" 문자열이 복사되어 함수 say()에..

개발/Go 2022.07.17

[Go] 기초 - 반복문

1. for - Go는 반복문에서도 괄호는 쓰지 않는다. - while 반복문이 없다. func main() { sum := 0 for i := 1; i 90 { // break //} } println(n) } - 무한 루프는 조건을 다 없애고 for만 써준다. func main() { for { println("Infinite loop") } } 2. for range - for range 문은 for "인덱스,요소값 := range 컬렉션" 컬렉션에서 2개의 변수를 가져온다. - 변수를 사용 안할 경우 _로 처리한다. names := []string{"기억", "니은", "디귿"} for index, name := range names { println(index, name) // 0, 기억 // ..

개발/Go 2022.07.17

[Go] 기초 - 조건문

1. if - 조건문은 다른 언어와 비슷하다. - 괄호는 생략 - {는 꼭 조건과 같은 라인에 와야한다. - else 문도 꼭 }와 같은 라인이어야 한다. if k == 1 { println("One") } else if k == 2 { println("Two") } else { println("!") } 2. switch - 복수개의 case 값들이 있을 경우는 case 3,4 처럼 콤마를 써서 나열할 수 있다. - 다른 언어는 switch 키워드 뒤에 변수나 expression 반드시 두지만, Go는 이를 쓰지 않아도 된다. 이 경우 Go는 switch expression을 true로 생각하고 첫번째 case문으로 이동하여 검사한다. - 다른 언어의 case문은 break를 쓰지 않는 한 다음 cas..

개발/Go 2022.07.15

[Go] 기초 - 연산자

Go는 다른 언어에서와 비슷하게 산술연산자, 관계연산자, 논리연산자, Bitwise 연산자, 할당연산자, 포인터연산자 등을 지원한다. 1. 산술연산자 산술연산자는 사칙연산자(+, -, *, /, % (Modulus))와 증감연산자(++, --)를 사용한다. c = (a + b) / 5; i++; 2. 관계연산자 관계연산자는 서로의 크기를 비교하거나 동일함을 체크하는데 사용된다. a == b a != c a >= b 3. 논리연산자 논리연산자는 AND, OR, NOT을 표현하는데 사용된다. A && B A || !(C && B) 4. Bitwise 연산자 Bitwise 연산자는 비트단위 연산을 위해 사용되는데, 바이너리 AND, OR, XOR와 바이너리 쉬프트 연산자가 있다. c = (a & b)

개발/Go 2022.07.13

[Go] 기초 - 데이터 타입

1. Go 데이터 타입 - Go는 하단의 데이터 타입을 가지고 있다. (1) 불리언 타입 bool (2)문자열 타입 string - string은 한 번 생성되면 수정될 수 없는 Immutable 타입 (3) 정수형타입 int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr (4) Float 및 복소수 타입 float32 float64 complex64 complex128 (5) 기타 타입 byte - uint8과 동일하며 바이트 코드에 사용 rune - int32과 동일하며 유니코드 코드포인트에 사용 2. 문자열 - 문자열은 `, "으로 감싸서 사용 (1) Back Quote (` `)로 둘러 싸인 문자열은 Raw String Litera..

개발/Go 2022.07.13

[Go] 기초 - 변수와 상수

예전 회사에서 Go를 접하여 프로젝트를 진행했었다. 하지만 당시에 Go를 제대로 이해하지 못하고, 복붙의 반복이었다. 이번 기회에 Go에 기초를 다져보려고 한다. 1. 변수 - 변수는 var를 사용하여 선언한다. var a int var b, c, d int var e int = 1 var f, g, h int = 1, 2, 3 i := "Hi" - 선언된 변수가 사용되지 않으면 에러가 발생한다.(사용 안할 시 지운다.) - 같은 타입의 변수를 여러개 선언할 경우 타입은 마지막에 한번만 지정할 수 있다. - Go에서는 ';'가 사용되지 않는다. - 초기값을 설정하지 않을 경우 숫자형에는 0, string형에는 "", bool 형에는 false를 할당한다. - 함수 내부에서는 변수 선언 방식을 다르게 가능..

개발/Go 2022.07.12
728x90