본문 바로가기
반응형

golang8

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의 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 구조체 설명 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.
프로그래머스] C++, golang 스택/큐- 기능개발(Level 2) 해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다. 아래 링크를 통해 풀 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 soluti.. 2020. 3. 18.
반응형

스킨편집 -> html 편집에서