Go-기초(1)

kyunhyun94·2021년 12월 22일
0

🌱가비지 컬렉션

  • 가비지 컬렉션 이란 메모리 관리 기법중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기법
  • Go 언어는 가비지 컬렉션(Garbage Collection, GC)을 제공
  • C, C++는 메모리를 할당하면 반드시 해제를 해주어야 하며 로직 작성보다 메모리 관리에 더 많은 노력과 시간을 소모하고 있어서 생산성이 많이 떨어진다 이후 메모리를 알아서 관리해주는 가비지 컬렉션 기술이 나왔고, 이 기술을 사용한 Java와 C#이 등장했으며 마찬가지로 Python, Ruby, JavaScript 등의 스크립트 언어들도 각 언어의 가상 머신에서 가비지 컬렉션 기술을 사용
  • Go 언어는 메모리를 관리해주는 가비지 컬렉터(Garbage Collector)가 실행 파일안에 내장되어 있다. 가상 머신 위에서 실행되는 언어들처럼 가상 머신이 메모리 관리를 해주는 것과 차이가 있다
  • Go 언어는 C, C++ 실행 파일 방식의 간결함과 가상 머신의 가비지 컬렉션 기능을 포함하고 있다.

🌱병행성

  • Go 언어는 go 키워드를 통해 함수 여러 개를 동시에 실행할 수 있다. 이렇게 실행된 함수를 고루틴(Goroutine)이라고 하는데 스레드와는 차이점이 있다. 스레드는 운영체제의 커널에서 제공하는 리소스이기 때문에 많이 생성할수록 부담이 커짐
  • 최대 프로세서(코어) 개수 설정에 따라 멀티코어도 지원(현재 프로세서의 개수를 구할 수 있으며, 일부 프로세서만 사용할 수도 있다)
    스크린샷 2021-10-26 오전 12 39 35
  • go 에서는 ;(세미클론이 필요없다) 선택적으로 사용할 수는 있음
  • go에서는 패키지 개념 패키지 내부에서는 변수,상수,함수,구조체,메서드가 선언
  • 모든 go파일은 패키지 내부에속해야한다 main패키지가 아닌 다른코드를 실행시킬수 없음
  • import"fmt" 다른 패키지를 포함하기 위해 사용 go 의패키지는 src에 모여있으며 pkg폴더에는 그러한 패키지가 컴파일된 소스코드가 모여있다
  • 변수 선언 var 사용 함수안에서는 단축변수선언 사용가능 :=
  • 변수를 여러개를 선언하고 초기화할떄에는 반드시 선언하는 변수와 초기화하는 값의 개수가 같아야함 타입은 달라도 됨
  • go에서는 패키지,타입과 똑같은 이름의 변수를 사용하여도 에러가 나지 않는다

🌱변수

  • var 변수1, 변수2 자료형 = 초깃값1, 초깃값2 : 여러개의 변수를
var x, y int = 30, 50       // x = 30, y = 50
var age, name = 10, "Maria" // age = 10, name = "Maria"
a, b, c, d := 1, 3.4, "Hello, world!", false // a = 1, b = 3.4, c = "Hello, world!", d = false

🌱상수 const

  • go에서는 타입을 정하지 않으면 go에서 알아서 타입을 지정해준다
  • go가 다른언어랑 다른 점은 클래스가 없다는 것이다.메서드라고 표현하는 것도 표현 방식이 다른 뿐 일반 함수와 유사하게 표시된다
  • go는 리턴 값을 여러개의 값으로 돌릴 수 있다.
  • go&go-routine go 키워드는 멀티스레드를 사용할때 유용하며 동시성을 가진다.
  • go get go get을 통하여 다른 패키지를 다운받을 수 있다.얻어온 패키지는 GOPATH로 다운로드 된다.GOPATH는 작업공간이라고도 하며 사용자마다 별도로 관리된다
  • go mod 사용자 정의 모듈을 만들떄 사용한다. example.com폴더로 진입하여 go mod init example.com명령어를 통해 모듈을 정의한다
    스크린샷 2021-10-27 오후 2 11 44
profile
일하기싫어

0개의 댓글