본문 바로가기

전체 글

(52)
golang7 slice slice golang에서 동적 array를 slice라고 한다. 즉 배열을 자유롭게 늘리거나 줄일 수 있도록 구성되었다. slice정의 slice를 정의하는 방식은 2가지가 있다. func main() { // 동적 배열 방식 slice1 := []int{1, 2, 3} // make 내장함수 slice2 := make([]int, 3, 3) // [1,2,3] fmt.Println("slcie1: ", slice1) // [0,0,0] fmt.Println("slcie2: ", slice2) } []Type{value...} make([]Type, len, cap) 1번 방식은 슬라이스를 선언하고 사용자가 원하는 값응로 초기화를 수행한다. 2번 방식은 슬라이스를 선언하고 타입의 zero value로 ..
golang6 구조체 golang이 OOP를 지원한다는 것을 들어보았을 것이다. golang은 OOP를 class문법을 제공해주지 않고 이와 유사한 기능을 struct를 통해 제공해준다. 구조체 C언어의 구조체처럼 golang에도 구조체가 존재한다. C언어의 구조체처럼 타입을 정의하는 기능을 수행한다. 대해 정. 다음의 코드를 보자 package main import "fmt" type Circle struct { r float64 x1, y1 int } func main() { circle1 := Circle{} circle2 := Circle{r: 10, x1: 5, y1: 2} fmt.Println(circle1) circle1.r = 100.4 // circle1의 r변수 변경 fmt.Println(circle1) f..
golang5 조건문과 반복문 반복문 golang은 반복문은 오직 for syntax만 제공해준다. 그래서 while문법을 이용하기 위해선 for문을 변형을 수행하여야 한다. for문의 구조는 다른 언어들과 큰 차이가 없다. for i := 0; i 10 { fmt.Printf("j: %d\n", j) j-- } 조건식만 작성해서 while문을 작성한다. 위의 코드에서 j-- 수식을 변화..
golang4 함수 함수 golang의 함수는 다음과 같이 작성된다. func add(a int32, b int32) int32 { return a + b } func 함수명(파라미터명 타입) 반환형 golang은 함수의 파라미터를 call by value와 cal by ref 를 모두 지원해준다. 이용하는 방식은 c언어와 비슷하다. 위의 add함수가 call by value방식으로 a와 b 파라미터를 입력받는 과정을 수행한다. call by ref는 다음과 같다. func callByRef(num *int){ *num=100 fmt.Println("CallByRef Function is ",*num) } call by ref는 주소를 참조하는 방식이므로 포인터 연산자를 이용해서 call by ref를 수행한다. 단 cal..
golang3 변수와 상수 변수 golang의 변수선언 방법은 2가지다. 1. var 변수명 타입 golang에서 변수 1개를 선언하는 방법이다. 타입은 생략 가능하다. 하지만 타입을 생략할 경우 초기값을 반드시 삽입해주어야 한다.(nil제외) var variableName int 매우 간단한 방법이다. 다른 언어에서도 이러한 선언 방식을 보았을 것이다. 이 선언 방식을 Variable A is string, 즉 변수 A는 string이다 로 읽히므로 코드를 좀 더 이해하기 쉽다는 말도 있다. var num1=10 var num2 int=10 위의 두 방식은 모두 같은 타입을 가진 변수 선언코드이다. 2. short assignment statement 변수 선언과 동시에 초기화를 시키는 방법이다. 위의 방법과의 차이점이라면 va..
golang1 연산자 인턴으로 가는 곳에 golang을 사용한다고 하여 golang에 복습해볼 겸 포스팅 해본다. 연산자 golang은 5가지 종류의 연산자가 존재한다. 대부분 다른 언어에서 만나보았을 연산자들이다. 기본 연산자 +: 덧셈연산 -: 빼기연산 +: 곱하기연산 /: 몫 %: 나머지 ++,--: 증감연산자 &: bit and연산 |: bit or 연산 ^: bit xor 연산 &^: bit clear(and not)연산 : right shift연산 증감연산자의 경우는 전위에는 사용할 수 없고 후위에만 사용할 수 있다. 왜 증감연산자는 후위에만 사용할 수 있는가 전위에서 사용할 수 없는 이유는 golang의 FAQ에 설명되어 있다. 원문은 다음과 같다. Without pointer arithmetic, the con..
vscode extension 개발일기10: extension배포 vscode를 배포를 준비하고 준비과정에서 찾은 버그도 발견되어서 해결하고 배포하였다. 배포준비: package.json에 배포 정보 작성 vscode 마켓에서 보여줄 정보를 package.json에서 저장한다. 해당 정보를 수정함으로서 보여질 값을 보여준다. { "name": "vscode-with-tistory", "displayName": "vscode with tistory", "description": "vscode에서 티스토리 게시글을 작성 및 수정할 수 있는 extension", "publisher": "green-flamingo", "version": "1.0.0", "license": "MIT", "bugs": { "url": "https://github.com/dev-green-flam..
vscode extension 개발일기9: 코드 최적화 코드 최적화 작성된 코드를 정리할 필요성이 느껴저서 아는대로 코드를 정리해보았다. 수행된 내용은 다음과 같다. 1. nodejs fs겉어내기 vscode에서는 nodejs fs 사용을 권장하지 않는다. 개인이 직접 파일을 읽고 쓰는 것에 대해 처리하는 과정이 어렵기 때문이라고 조심스럽게 예상해본다. nodejs에 종속되어 있는 기능을 사용하기 보다 vscode에 종속된 기능을 사용하는 것이 vscode가 파일 읽기를 보장해준다고 생각하여 vscode fs로 변경하기로 하였다. https://code.visualstudio.com/updates/v1_37#_vscodeworkspacefs 해당 내용을 읽어보면 vscode.workspace.fs는 nodejs의 fs를 대체하는 기능을 제공해준다. vscod..