본문 바로가기
반응형

프로그래밍/Go언어13

Golang 변수 초기화와 정의된 데이터 타입, 함수 Golang의 특징중 하나는 무조건 변수의 초기값이 할당된다는 것입니다. 즉, 쓰레기 값이 없습니다. 또한 이미 정의된 키워드(int, true, float32 etc...) 들도 있으며, 이에 대해 설명하고자 합니다. 1. Go 정의된 데이터 타입과 함수 상수 true, false, iota, nil 타입 int, int8, int16, int32, int64 uint, uint8, uint16, uint 32, uint64, uintptr float32, float64, complex64, complex128 bool, byte, rune, string, error 함수 make, len, cap, new, append, copy, close, delete complex, real, imag pani.. 2021. 8. 29.
Go언어 Restful을 위한 패키지 gin 설명 이번에 Toy 프로젝트로 go언어를 선택했고, 이를 가지고 restful 서버를 만들기로 했다. 찾으면서 나온 패키지들은 여러가지가 있는데, 가장 많이 사용하고, 내가 사용함에 있어 필요한 기능들을 제공해주는 프레임 워크를 선택하게 되었고 gin을 사용하기로 결정했다. gin framework https://github.com/gin-gonic/gin gin-gonic/gin Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself s.. 2021. 7. 4.
Golang Array, Slice 사용법. (append) Golang에는 Array와 Slice가 있습니다. Array는 정적 배열, Slice는 동적 배열로 표현됩니다. 사실 이 둘의 차이는 선언할 때 배열의 길이를 정해주느냐, 정해주지 않느냐의 차이입니다. 하지만 이 차이가 정적과 동적 배열을 결정하게 됩니다. 1. Array package main import "fmt" func main() { var arr1 [5]int = [5]int{1, 2, 3, 4, 5} var arr2 = [3]int{1, 2, 3} arr3 := [4]int{1, 2, 3, 4} fmt.Println(arr1) //output : [1, 2, 3, 4, 5] fmt.Println(arr2) //output : [1, 2, 3] fmt.Println(arr3) //output.. 2021. 6. 27.
Golang interface에 대한 설명.... Go는 기본적으로 상속을 지원하지 않습니다. 단, interface를 제공함으로써 추상화를 돕고, 객체들을 서로 연결시켜주는 역할을 해줍니다. 단, 상속이 아니기 때문에 dependency가 낮으며, 느슨한 관계가 됩니다. 이는 Go언어의 설계목적에 있는것이죠. 1. interface 선언방법 type Calculator interface {...} Golang의 guideline을 보면 interface를 선언할 때 시작문자는 대문자로, 단어 끝에는 -er로 끝나도록 만들라고 합니다. 즉, 어떠한 일을 하는 행위자를 표현하는것이 좋습니다. 기본적으로 golang의 struct는 상속이 없기때문에, insterface안에 선언된 함수들을 사용하려면 리시버라는 기능을 통해함수를 따로 정의해야 합니다. 2... 2021. 6. 6.
Golang의 fmt.Print는 heap으로 간다? Golang에는 fmt라는 패키지가 있습니다. 그리고 fmt.Print 를 사용하여 사용자에게 출력해주죠. 하지만 fmt를 사용하여 변수를 출력하면 해당 변수는 stack에서 heap으로 가버리게 됩니다. 다음 예시를 봅시다. package main import "fmt" func main() { i := 10 fmt.Println(i) } $ go build -gcflags '-m' struct.go # command-line-arguments .\struct.go:7:13: inlining call to fmt.Println .\struct.go:7:13: i escapes to heap .\struct.go:7:13: []interface {}{...} does not escape :1: .this.. 2021. 5. 23.
Golang Closure(클로저)란? (인라인과 메모리 할당 설명) Golang 에서는 JavaScript에 있는 클로저의 기능이 존재합니다. 우선 클로저에 대해 설명하자면.... 클로저는 함수가 종료되도 함수 안에 있는 변수가 사라지지 않고, 계속 존재하며 사용할 수 있도록 해주는 것이 클로저입니다. 이렇게 읽어보면 정말 쓸대없고, 왜 사용하는지, 왜 존재하는지 이유를 모릅니다. 천천히 설명해보겠습니다. 1. Golang Closure package main func closure() func() { var i int = 0 return func() { i++ println(i) } } func main() { next := closure() next() next() next() } //output : 1 2 3 클로저는 기본적으로 일급함수(람다함수)랑 같이 사용됩니다.. 2021. 5. 23.
Golang 함수, 익명함수 사용법. Golang의 함수, 익명함수 사용법입니다. Golang은 Lambda라는 표현을 사용하지 않습니다. 뭐.... 익명함수나 Lambda나 결국 같은 놈이니깐요..... 1. 함수 package main import ( "fmt" ) func add(a int, b int) int { return a + b } func main() { var a int = 10 var b int = 20 fmt.Println(add(a, b))//output : 30 } 이런식으로 함수를 정의할 수 있습니다. Golang의 함수는 이런식으로 구성되어 있습니다. 별거 없죠..... 하지만 Golang의 특징중 하나는 return 값을 여러게 줄 수 있다는 것입니다. 2. 함수 리턴 여러개 package main import.. 2021. 5. 16.
Golang for문 사용법!! Golang에선 for문 사용법이 좀 여러가지가 있습니다. 그리고 Golang에선 while문이 없죠. 이건 Golang의 정신? 이런 의미로, Golang의 목적이 있죠. Golang은 기능이 비슷한 것들을 모두 지웠습니다. 예를 들면 ,if문과 삼항 연산자, for문과 while문 등.... Golang에선 삼항연산자와 while문이 없죠. 또한 if문과 for문 사용시 반드시 중괄호( { } )를 입력해줘야합니다. 본론으로 돌아와서 for문에 대해 알아봅시다. 1. for 변수; 조건; 연산자 package main import "fmt" func main() { for i := 0; i < 10; i++ { fmt.Println(i) } } //아래와 같은 형식으론 안됩니다. for var i i.. 2021. 5. 16.
Golang 구조체 설명 Golang에는 class 개념 대신 struct개념이 있습니다. 쉽게말해 C나 C++에 있는 struct입니다. 하지만 Golang에는 다른 OOP와는 다르게, class의 역할중 생성자, 맴버변수 선언을 하지 못합니다. 또한 private, public이라는 개념이 따로 없으며, pirvate과 public이라는 선언대신 해당 struct를 외부에서 가져다 사용하거나 내부에서 사용할때의 기준을 정할 수 있습니다. 선언 방법은 다음과 같습니다. 1. 스택에 구조체 선언 package main import "fmt" type A struct { name string num int } func main() { a := A{} a.name = "hwan" a.num = 10 } 위와 같이 선언하면 사용할 수.. 2021. 5. 2.
Go "fmt" 패키지의 사용법과 Print, 내장함수 println 차이 Golang 에서는 "fmt" 라는 기본적인 패키지를 제공해줍니다. 처음 Golang을 접하게 되면 당연 출력하는 것이 "Hello warld"라고 생각합니다. 다음 예제를 보시죠. package main import "fmt" func main() { println("hi") fmt.Println("fmt") } //Output hi fmt fmt 패키지를 사용해 Println이라는 메소드를 호출하여 흔히 문자열을 출력합니다. 그럼 println 은 뭘까요?? fmt.Println()은 stdout 으로 표준 문자열 출력을 제공하는 함수입니다. println()은 내장된 함수로 stderr를 출력해주는 내장함수 입니다. 때문에 println()은 주로 디버깅 할때 유용하다고 합니다. 그럼 fmt 패키지.. 2021. 4. 18.
Go lang 시작하기(VSCode 셋팅) Go lang 셋팅을 해보자. 1. 패키지 다운 golang.org/ The Go Programming Language Download Go Binary distributions available for Linux, macOS, Windows, and more. // You can edit this code! // Click here and start typing. package main import "fmt" func main() { fmt.Println("Hello, 世界") } Hello, World! Conway's Game of Life Fibonacci golang.org 해당 공식 홈페이지에서 다운로드를 누른 후 운영체제 환경에 맞게 설치해줍니다. 그 후 설치파일을 실행시켜 설치를 완료합니다.. 2021. 4. 5.
Go 언어의 goroutine에 대해서... 기본적으로 C++은 Thread or task or async를 이용해 쓰레드를 만듭니다. JAVA는 extands Thread을 이용한 run overriding or implements Runnable 을 이용한 run overriding 또는 future클래스를 이용한 Thread 할당 등.... 여러가지 방식으로 Thread를 만들 수 있습니다. 반면 Go언어에서 쓰레드를 사용하려면 go 키워드를 이용한 goroutine을 사용해야 합니다. 1. goroutine vs Thread??Thread의 경우 기본적으로 stack을 할당받으며, heap, data 영역은 공유를 하게 됩니다.때문에 프로세스보다 가볍다는 장점과 context 발생시 프로세스보다 빠르다는 점이 있습니다. Thread는 기본(.. 2020. 11. 4.
Go언어를 왜 사용 할까? Go언어란?Google에서 만든 프로그래밍 언어 입니다. C를 기반으로 만들어 졌으며, C언어의 장점을 살리면서 다양한 곳에서 활용할 수 있도록 만든 언어입니다. 즉, 시스템 개발, 운영체제, 웹 서버, 웹 브라우저, 로봇, 검색앤진 등 다양한 곳에서 사용하도록 말이죠. Go언어의 특징은 다음과 같습니다.1. 개발 속도 2. 모듈화를 위한 의존성 3. 동적 타입을 가진 속성 언어 4. 가비지 컬렉션 5. 병렬 처리 1. 개발 속도가 빠르다.Go 언어는 라이브러리에서 여러가지를 제공하고 있습니다. Go 언어는 멀티코어 기반으로 설계되어 있기 때문에 현재 하드웨어 개발, 소프트웨어 개발에 큰 이점을 갖고 있는 것이 사실입니다. 코드도 간결하게 짤 수 있습니다. 또한 C/C++에서의 컴파일 시간보다 현저히 빠.. 2020. 11. 4.
반응형

스킨편집 -> html 편집에서