Golang

Slice

Slice

컴파일타임에 데이터 크기가 고정되어 런타임에 변경이 되지 않는 일반 배열과 달리 변경이 가능한 동적 배열 타입을 slice라고 한다. 정확하게 얘기하면 go에서 제공하는 배열을 가리키는 포인터 타입이다. 1. 선언 방법 var a []int //길이가 0인 slice fmt.Println(len(a)) //0 b := []int{1,2,3} //길이가 3인 slice fmt.Println(len(b)) //3 var c = []int{1, 5:2, 9:3} //길이가 10인 slice fmt.Println(c) //[1 0 0 0 0 2 0 0 0 3] 배열선언방...

Read More
모듈과 패키지

모듈과 패키지

1. 모듈의 변천과정 Go 1.11 이전 : 모듈 존재 X Go 1.11 : 모듈이 소개되었지만 미완성 Go 1.13 : 모듈 완성 Go 1.16 : 모듈이 이제 기본이 되었다. 1) 모듈 모듈은 패키지의 모음 2) 패키지 패키지는 코드를 묶는 단위로 모든 코드는 반드시 패키지로 묶여야 한다. 우리가 흔히 부르는 프로그램은 다양한 관점에서 의미를 해석할수 있을 텐데 실핼파일 관점에서보면 실행시작 지점을 포...

Read More
문자열

문자열

문자의 집합(배열)이라는 의미이다. 기존의 문자는 ASCII코드로 1byte를 갖기 때문에 0~255로 총 255개의 문자를 표현할 수 있었는데 이 수로는 현재 존재하는 언어(문자)들을 모두 표시할 수 없기 때문에 더 큰 byte의 문자가 필요해졌다. 대표적으로 UTF-8이 있는데 이는 한 문자당 1~4byte를 갖고 UTF-16은 2by...

Read More
포인터

포인터

메모리 주소를 값으로 갖는 데이터 타입 1. 선언 방법 var a int var p *int p = &a 메모리주소를 가리킬 데이터타입형에 *를 붙이면 해당 타입의 메모리주소를 담는 포인트형을 선언 할 수 있다. & 를 이용해서 변수의 메모리주소 시작값을 할당 할 수 있다. 메모리 주소 시작값은 하나의 값으로 일종의 숫자 값이다. 2. 사용 방법 var a int var p *int var b *int var c *int p = &a b = &a c =...

Read More
제어문

제어문

1. if문 제어문 중에 하나로 다른 언어들과 사용목적은 동일하며 if~else if~else 를 똑같이 지원한다. 1) 선언 방법 score := 56 if score > 80 { fmt.Println("A") } else if(score > 50) { //소괄호로 감쌌지만 not Error fmt.Println("B") } else { fmt.Println("C") } if true { fmt.Println("true") //조건이 bool이면 success } if 1 { fmt.Println("true") //bool이 아니면 error } Java나 c처럼 **()**로 조건문을 감싸지 않고 바로 조건문을 작성하면 되고 Java처...

Read More
구조체

구조체

여러 필드를 묶어서 사용하는 타입으로 C의 structure와 비슷하며, go에서는 별도의 클래스를 키워드를 제공하지 않지만 구조체를 이용해서 클래스를 정의할 수 있다. 1. 선언 /* type 이름 sturct{ ... 필드명 } */ type School struct{ Name string CntTeacher int } type Student struct { school School Name string score float64 } //Student형 변수 선언 var student Student student.Name = "홍길동" student.score = 87.1 struct을...

Read More
연산자

연산자

1. 산술 연산자 구분 연산자 연산 피연산자 타입 사칙 연산과 나머지 + 덧셈 정수, 실수, 복소수, 문자열 - 뺄셈 정수, 실수, 복소수 * 곱셈 정수, 실수, 복소수 / 나눗셈 정수, 실수, 복소수 % 나머지 정수, 실수, 복소수 비트 연산 & AND 비트연산 정수 | OR비트 연산 정수 ^ XOR비트 연산 정수 &^ 비트 클리어 정수 시프트 연산 « 왼쪽 시프트 정수 « 양의 정수...

Read More
상수

상수

상수는 Immutable(불변)한 특징을 갖으며 한 번 할당된 값을 변경할 수 없는 변수이다. const a int = 1 const b string = "hi" const d = 10 //자료형을 생략가능하다. f := 10 //이는 자동으로 var 형태의 변수로 선언이 되기 때문에 상수가 될 수 없다. var runTimeVar int = 1 const e = runTimeVar * 10 //runTimeVar는 런타임에 값이 할당되기 때문에 컴파일타임에 d의 값을 할...

Read More
배열

배열

배열은 연속된 메모리에 저장된 자료구조로 다른 자료구조 중 Random Access가 가장빠르고 고정된 길이의 자료구조이다. 배열과 비슷한 자료구조로 go에는 slice가 존재하는데 slice는 동적인 길이의 배열과 같다. 1. 선언 방식 func main(){ var a [5]int } 배열은 고정된 size의 자료구조이기 때문에 변수를 선언하는 방식에서 타입을 **[]**를 이용해...

Read More
함수

함수

1. 함수 생성 방법 package main func main(){ a := 1 say(a) } func say(a int) { println(a) } func키워드를 이용해서 함수를 선언할 수 있고 가장 기본적으로 만드는 main도 함수 이다. 2. 매개변수(인자) 1) 전달 방식 Java처럼 primitive자료형은 pass by value, reference자료형은 pass by refernece가 아닌 go는 C처럼 *을 이용해서 value인지 refer...

Read More
표준 입출력

표준 입출력

GoLang의 표준 입출력은 다른 언어와 같이 터미널이 기본이며, 파일등으로 수정이 가능하고 fmt패키지에서 제공을 한다. 입출력은 BitStream형태로 되어있다. 1. 표준 출력 1) 함수 함수 기능 Print() 입력값들을 출력 Println() 마지막에 개행문자를 포함한 입력값들을 출력 Printf() c의 printf와 같이 특정 포맷에 맞게 출력 2) 포맷 서식 포맷형태 설명 %d 정...

Read More
변수

변수

1. 변수 선언 1) 기본 방법 var a int var a int = 10 var b,c,d int = 1,2,3 //동시에 여러개 변수 선언도 가능하다. var키워드로 변수를 선언하고 변수명 다음 데이터 타입을 명시해주어야 하고, 선언만 하고 초기화를 해주지 않으면 go는 Zero value를 할당한다. Note Zero Value 숫자 = 0 bool = false string = "" 2) 타입 추론 var a = 10 var q,w,e = 1, true, "#" //동시에 여러개 변수 선언을 할때 다른...

Read More
Golang 특징

Golang 특징

1. 특징 1) 정적 컴파일 언어 JVM을 이용하는 Java와 같이 Runtime에 환경에 맞는 기계어로 번역을 하는 동적 컴파일 언어가 아닌 c나 c++와 같이 한번 compile을 통해 특정환경에 맞는 실행파일을 만들어내는 정적 컴파일 언어이다. 정적 컴파일 언어는 환경(Os, CPU종류)들이 다양해지면서 NxM개의 수만큼 많은 번역기가 존재했...

Read More