Language/Go

Go 시작

개발하는 구름이 2023. 9. 17. 20:36

Hello World 출력해보기

package main

import "fmt"

func main() {
	fmt.Println("Hello World")
}

위 코드를 작성한 후 터미널에서 다음과 같은 명령어를 입력한다.

위 코드 처럼 모듈을 만들고, (go mod init go/hello) (위에 이미 내가 모듈을 만들었기 때문에 저런 문구가 뜨기 때문에 그냥 넘어가면된다.) go build를 실행하고, ./hello.exe를 실행하면 Hello World가 실행된다.

 

 

Go 기본 코드 분석

Go의 기본 코드를 분석하면 코드 구조를 쉽게 알 수 있다.

  1. package : 현재 파일이 어떤 패키지에 속하는 지를 알려준다.
  2. import : 어떤 코드에서 다른 패키지에 있는 코드를 사용하기 위해 패키지를 가져오는 것이다.
  3. func main() {} : c/c++, java의 main함수와 같은 entry point 역할을 한다. API 함수의 경우는 굳이 main을 만들 필요는 없지만, 구동이 필요하다면 main이 있어야 한다.
  4. fmt.Println() : fmt는 format이라는 의미로 "fmt" 패키지에 있다. 이를 통해 서식 문자로 출력이 가능하다.

 

Go 타입

  • 정적 타입언어이다. 그래서 basic type이 매우 중요하다.
    • 정수형 : int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uinptr 
      • u가 붙여있다는 것은 부호가 없다는 것, 즉 무조건 양수
    • 바이트 : byte 라고 쓰지만 내부적으로 uint8과 같다.
    • 문자 : '' 로 표현하며 rune 이라고 표현한다. 내부적으로 int32와 같다.
    • 문자열 : ""로 표현하며 string 으로 쓴다.
    • 실수형 : float32, float64
    • boolean : bool
    • 복소수 : complex64, complex128
  • 디폴트
    • 변수 선언 시 값을 초기화 해주지 않으면 디폴트 값이 들어간다.
      • 정수, 실수 : 0
      • 문자열 : 빈 문자열("")
      • bool : false
  • 단축 변수 선언
    • 변수의 타입을 명시적으로 선언하고, 나중에 값을 할당하는 대신 := 연산자를 이용하여 선언과 초기화 작업을 동시에 하는 것이다.
package main

import "fmt"

func main() {
	var a int = 3
	var b int
	var c = 4
	d := 5

	var e = "hello"
	f := 3.14

	fmt.Print(a, b, c, d, e, f)
}
  • 타입 변환
    • Go에서는 수학 및 비교 연산에는 동일한 타입의 값만 사용할 수 있다. 따라서 타입이 다른 경우에는 에러가 발생한다. 또한, 변수의 타입이 다른 값을 할당하려고 하면 에러가 발생한다. 때문에 타입 변환이 필요하다.
바꾸려는 타입(변수)
package main

import "fmt"

func main() {
	a := 3
	var b float64 = 3.5

	var c int = int(b)
	d := float64(a) * b

	var e int64 = 7
	f := a * int(e)

	fmt.Println(a, b, c, d, e, f)
}