1. Golang이란?
Go 언어는 2009년에 발표된 언어로 구글에서 3명의 개발자가 만든 오픈소스 프로그래밍이다.
Go 언어를 개발한 개발자들은 b언어와 c언어, urf-8의 개발자로 Go 언어 또한 기본 문자 엔코딩으로는
utf-8을 사용하고 C언어와 닮아있다.
2. Golang의 특징
(1) 클래스는 없지만 메서드를 가지는 구조체를 지원한다.
(2) 클래스가 없기 때문에 상속도 없다.
(3) 구조체가 메서드를 가질 수 있다.
(4) 상속은 없지만 인터페이스는 있다.
(5) 함수 리터럴이라는 이름으로 익명함수가 있다.
(6) 고성능 가비지컬렉터를 제공한다.
(7) 메모리 주소를 가리키는 포인터가 있다.
(8) c++의 템플릿 같은 제네릭 프로그래밍을 지원하지 않았지만 1.18버전부터 지원하게 되었다.
(9) 네임스페이스를 제공하지 않는다. 모든 코드는 패키지 단위로 분리된다.
3. Golang 기초
package main
import "fmt"
func main(){
//이것은 주석입니다
fmt.Println("Hello Go World")
}
위와 같이 작성한 코드를 살펴보겠다.
(1) pakage main
Go의 모든 코드는 어떤 package가 들어가 있어야 하며 package로 시작되어야 한다.
package는 코드를 묶는 단위이다. main은 패키지명을 뜻한다.
항상 코드의 시작은 package이다.
pakcage main에서 main은 의미가 있는 패키지명이다.
main은 프로그램 시작점을 포함하는 패키지라는 의미가 있다.
기본적으로 프로그램이 실행되면 load한다.
load의 과정은 메모리에 올라간 명령어를 한줄씩 읽는것이다.
이 명령어를 읽을때 맨 윗부분이 아닌 시작점을 정할수 있다.
그 시작점을 starting point라고 한다.
pakcage main은 starting point를 가지고 있는 패키지이다.
모든 프로그램은 starting point를 하나만 가질수 있다.
main이 아닌 다른 package는 여러개를 가질 수 있다.
(2) import "fmt"
fmt는 패키지 명이다. 직역해보면 fmt라는 패키지를 사용하겠다는 뜻이다.
패키지란 코드를 묶는 단위이기 때문에 어떠한 기능을 가지고 있다. 그 기능을 쓰기 위해 패키지를 가져온다.
프로그램 코딩시 필요한 기능을 쓰기 위해 그 기능을 포함한 패키지를 가져오면 된다.
import "main"은 가능한지 살펴본다면 main은 앞서 말했듯 pakcage main 하나만 존재할수 있고 자기자신을 불러올수 없기 때문에 안된다.
(3) func main(){}
func : function의 약자로 함수라는 뜻이다.
main : 함수명이다.
함수에서도 main이라는 함수명은 특별한 키워드로 약속 되어있다.
main함수가 의미하는건 프로그램의 시작점이라는 뜻이다.
package main은 main함수를 가지고 있는 package이다.
프로그램이 로드되면 main함수로 시작해서 main함수로 끝난다.
(4) //이것은 주석입니다.
//을 쓰고 뒤에 다른 말을 써도 코드에 영향을 주지 않는 것을 주석이라고 한다.
부연설명이 필요한경우 집어넣거나 메모가 필요한 경우 쓰인다.
/*로 시작해서 */끝낸다면 그사이에 집어넣는것도 주석처리가 된다.
자바스크립트의 주석과 똑같다.
/*여기도
주석
입니다*/ 이처럼 /**/ 를 사용하면 여러줄을 주석으로 처리할 수 있다.
프로그램의 시작은 package로 시작되어야 하지만 그앞에 주석은 쓸수 있다.
(5) fmt.Println("Hello Go World")
fmt 패키지가 가지고 있는 기능을 사용하기 위해서 fmt패키지안에 포함된 기능중 하나인
Println 기능을 쓴다는 의미이다.
Print + line의약자 를 붙인말로 한줄을 출력하라는 뜻이다.
따라서 안에 Hello Go World가 출력될 것이다.
프로그램의 실행은
go run 파일이름.go
또는
go mod init 모듈명(주로 경로/파일이름)
을 입력하고 go.mod가 생기면
go build
를 입력하여 exe파일을 만들어주고
상대경로로
./파일이름.exe
를 입력하면 실행된다.
'개발 > Go' 카테고리의 다른 글
[Go] 연산자 (0) | 2022.08.10 |
---|---|
[Go] Golang fmt 패키지 (0) | 2022.08.03 |
[Go] Golang 기초 - 3 (0) | 2022.08.02 |
[Go] Golang 기초 - 2 (0) | 2022.08.02 |
[Go] Go 설치 및 기초 (0) | 2022.07.25 |