언어
-
[Golang] map언어/Golang 2020. 2. 9. 18:54
map은 key:value로 이루어져 key에 대응하는 value를 찾는 해시 테이블을 구현한 자료구조입니다. 선언하는 방법은 아래와 같습니다.package main func main() { var a map[int]string // nil값을 가지므로 (Nil Map) 어떤 값도 선언할 수 없음. make()를 사용해 map을 초기화 해줘야 사용 가능 a = make(map[int]string) a[1] = "test" //{} 내부에 값을 바로 선언 가능 b := map[int]string { 1: "test", } c := make(map[int]string) c[1] = "test" println(a[1]) println(b[1]) println(c[1]) } 아래는 map 타입의 변수에 값 체크..
-
[Golang] 배열 (array) & 슬라이스 (slice)언어/Golang 2020. 2. 9. 18:39
배열 (array)Go에서 배열의 배열크기는 Type을 구성하는 한 요소입니다. 즉, [3]int와 [5]int는 서로 다른 타입으로 인식됩니다. 배열의 선언 및 초기화는 아래와 같습니다.package main func main() { var a [3]int a[0] = 1 a[1] = 2 a[2] = 3 var b = [3]int{1,2,3} var c = [...]int{1,2,3} var d = [...]int{1,2} println(a[0]) println(b[0]) println(c[0]) println(d[0]) var aa = [2][3]int{ {1, 2, 3}, {4, 5, 6}, } println(aa[0][0]) }슬라이스 (Slice)Go 배열은 크기를 동적으로 증가시키거나 배열을 ..
-
[Golang] 함수 (function)언어/Golang 2020. 2. 9. 18:10
call by value일 땐 상관없지만 주소값을 넘길 땐 받는 함수의 파라미터 타입을 정의할 때 조심해야 합니다.package main func main() { msg := "Hello" say(&msg) println(msg) //변경된 메시지 출력 } func say(msg *string) { println(*msg) *msg = "Changed" //메시지 변경 } 함수의 파라미터 값을 가변적으로 받고 싶을 때 아래와 같이 ...을 사용합니다. (파이썬에서 *args 와 동일한 기능)package main func main() { say("One", "Two", "Three", "Four") say("Five") } func say(msg ...string) { for _, s := range m..
-
[GO] 데이터 타입 & 연산자언어/Golang 2020. 2. 9. 18:04
데이터 타입타입은 컴파일러 언어나 데이터베이스에서 늘상 보는 것과 동일합니다. 다만 아래는 사용할 때 잘 알고 사용하는 것이 좋습니다.문자열 타입 string: 한번 생성되면 수정될 수 없는 Immutable 타입byte: uint8과 동일하며 바이트 코드에 사용rune: int32과 동일하며 유니코드 코드포인트에 사용문자열문자열은 quote나 back quote로 표현할 수 있습니다. quote는 한 줄로만 표현이 가능하며 \n과 같은 escape 문자열을 인식하고 back quote는 여러 줄로 표현이 가능하지만 \n과 같은 escape 문자열을 텍스트로만 인식합니다. 여러 줄로 표현할 때, 엔터를 치면 해당 값은 다음 줄로 인식이 가능합니다.package main import "fmt" func m..
-
[Golang] 조건문 (if) & Switch문언어/Golang 2020. 2. 9. 16:48
조건문 (if)파이썬과 동일하게 () 괄호를 사용하지 않아도 되고 조건문의 조건은 반드시 boolean 타입으로 나와야 합니다. Golang에서는 다른 언어와는 다르게 조건문의 코드 스타일을 강력하게 잡고 있습니다. if문 이후 else if 나 else의 시작은 다음 줄에서 시작할 수 없으며 if문이 끝나는 동일한 라인에서 선언해야 합니다.또한 조건문에 값을 선언하여 조건문 범위 내에서만 사용할 수 있습니다.package main import "fmt" func main() { str := "123" var i int = 100 var max int = 1000 if str == "12" { fmt.Println("12") } else if str == "23" { fmt.Println("23") } ..
-
[Golang] 변수언어/Golang 2020. 2. 9. 16:37
Golang에서 변수를 선언하는 방법은 아래와 같습니다.1. 변수 선언 후, 값 지정하기var test int test = 102. 변수 선언과 동시에 값 지정하기var test int = 103. 타입없이 변수 선언하기var test = 100 var test1 = "100" 컴파일에서 선언된 값의 타입을 확인한 다음, 내부적으로 타입을 지정해 주는 스타일입니다.4. 동적 변수 선언하기test := "vary" 3번과 유사하지만 변수라는 형태인 var 없이 선언하는 스타일입니다. 하지만 이러한 표현은 함수내에서만 사용할 수 있으며, 함수 밖에서는 var를 사용해야 합니다.5. 동일 타입을 가지는 복수개의 변수 선언하기var i, j int i = 10 j = 20 var i, j int = 0, 0 i..
-
[Python] 여러 진수로 변환하기 (3진수, 4진수, 11진수 등등)언어/파이썬 & 장고 2019. 12. 8. 17:58
파이썬에서는 2진수, 8진수, 10진수, 16진수로 쉽게 변환할 수 있도록 내장함수가 포함되어 있습니다. 하지만 3진수나 4진수와 같이 다른 진수로 변환하고자 하면 직접 구현을 해야 합니다. (조사를 했지만 파이썬에서는 따로 제공하지 않는 것으로 확인)이러한 요구사항 때문에 아래에 2진수부터 16진수까지 변환하는 코드를 작성했습니다.NOTATION = '0123456789ABCDEF' def numeral_system(number, base): q, r = divmod(number, base) n = NOTATION[r] return numeral_system(q, base) + n if q else n # 2진수 result = numeral_system(18, 2) # 4진수 result1 = num..
-
[Python] 2진수, 8진수, 10진수, 16진수 변환언어/파이썬 & 장고 2019. 12. 8. 17:14
먼저 파이썬은 기본 10진수이기 때문에 다른 진수는 아래와 같이 접두어가 붙습니다.2진수: 0b8진수: 0o16진수: 0x10진수에서 2진수, 8진수, 16진수 변환bin(), oct(), hex() 내장함수 사용파이썬에서 제공하는 내장함수를 사용하면 쉽게 변환 할 수 있습니다.value = 60 b = bin(value) o = oct(value) h = hex(value) print(b) print(o) print(h) # 0b111100 # 0o74 # 0x3c 결과는 전부 문자열 타입입니다.format() 내장함수 사용forrmat() 내장함수를 사용하여 위 결과와 마찬가지로 변환할 수 있습니다.value = 60 b = format(value, '#b') o = format(value, '#o'..
-
[Django] serializer bulk create, update 구현하기언어/파이썬 & 장고 2019. 12. 3. 21:04
장고의 DRF를 사용하여 viewset을 구현하면 제목과 같은 기능이 필요할 때가 있습니다. 기본 ORM을 사용한다면 쉽지만 유효성 검사를 직접 구현해줘야 합니다. DRF의 serializer를 사용하여 처리를 하는 방식을 아래에서 설명합니다.bulk createbulk create는 큰 구현이 필요하지 않습니다. viewset에서 def list() 함수를 상속 받은 다음, 요청 데이터 타입이 list일 때만 serializer의 파라미터에 {'many': True}를 주면 끝납니다. class AdminViewSet(viewsets.ModelViewSet): def create(self, request, *args, **kwargs): kwargs["many"] = isinstance(request...
-
[Django] custom command 만들기언어/파이썬 & 장고 2019. 12. 2. 19:40
$ python3 manage.py --help를 입력하면 django에서 제공하는 command를 확인할 수 있습니다. 이 때, 사용자가 임의로 어떤 명령어를 만들고 해당 명령어를 통해 일련의 작업을 수행하도록 하기 위해선 커스텀 커맨드를 만들어야 합니다.개요먼저 프로젝트의 구성이 아래와 같다고 가정합니다.polls/ __init__.py models.py management/ commands/ _private.py closepoll.py tests.py views.py 커스텀 커맨드를 만들기 위해선 polls와 같이 app이 지정되어야 하고 해당 app 하위에 management/commands/ 폴더가 생성되어야 합니다. 해당 폴더의 이름은 고정이며 다른 이름으로 변경할 시, 커스텀 커맨드가 작동하..