Go Lang
폴더 생성
goproject/hello/extra
위와 같은 폴더구조를 지니게 됬다면, hello 폴더 아래있는 모든 .go
파일들은 hello package 에 포함됩니다. 그리고 만약
extra package 에 포함되어 있는 .go
파일들은 extra package 에 포함되게 됩니다. 즉, go
에서는 폴더가 달라지면 package 도 달라집니다.
Kotlin 과 Java 와는 약간 다른 구조다.
create Go module
go mod init goproject/hello
go module 에는 NPM 진영의 package.json 과 같이 모듈명과 go-version 및 필요한 정보가 담겨있습니다.
Go build
go build
위 명령어를 입력하면 go file 들이 build 되며, Architecture 나 OS 따라서도 다르게 빌드할 수 있습니다.
GOOS=linux GOARCH=arm64 go build
Code 분석
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
위의 Code 를 보면 package 가 main 임을 알 수 있는데, 이는 Go 에서 특별한 의미를 가진 패키지로 프로그램 진입점을 알려주는 패키지입니다.
또한 Go 언어는 반드시 package 선언이 먼져 이루어져야 합니다.
import "fmt"
Go 에서 package 를 import 해오는 방법입니다.
main func
Go Lang 또한 main 함수가 시작 진입점 입니다.
Go lang 변수 선언
Go lang 에서 변수를 선언 하는 방법은 아래와 같습니다.
변수 선언 키워드 | 변수 이름 | 타입 = 초기값
그래서 위의 코드를 아래 실제 코드로 나타내면 아래와 같습니다.
func main() {
var minimumWage int = 10
var workingHour int = 10
var income int = minimumWage * workingHour
fmt.Println(minimumWage, workingHour, income)
}
Go 변수명 규칙
Go lang 에서 변수를 지을때는 반드시 문자나 _ 로 시작해야 합니다.
- 올바른 예 : abc, _roach
- 올바르지 않은 예 : 1abc, 123
그리고 Go 는 기본적으로 camelCase 를 권장합니다.
Go Variable Size
이름 | 설명 | 값의 범위 |
---|---|---|
uint8 | 1바이트 없는 부호 정수 | 0 ~ 255 |
uint16 | 2바이트 없는 부호 정수 | 0 ~ 65535 |
uint32 | 4바이트 없는 부호 정수 | 0 ~ 4294967295 |
uint64 | 8바이트 없는 부호 정수 | 0 ~ 18446744073709551615 |
int8 | 1바이트 있는 부호 정수 | -128 ~ 127 |
int16 | 2바이트 있는 부호 정수 | -32768 ~ 32767 |
int32 | 4바이트 있는 부호 정수 | -2,147,483,648 ~ 2,147,483,647 |
int64 | 8바이트 있는 부호 정수 | -9,223,372,036,854,775,808 ~ -9,223,372,036,854,775,809 |
float32 | 4바이트 실수 | IEEE-754 32 비트 실수 |
float64 | 4바이트 실수 | IEEE-754 64 비트 실수 |
complex64 | 8바이트 복소수(진수, 가수) | 진수와 가수 범위는 float32 와 같음 |
complex128 | 16바이트 복소수(진수, 가수) | 진수와 가수 범위는 float64 와 같음 |
byte | uint8 의 별칭 | 0 ~ 255 |
rune | int32 의 별칭, UTF-8 문자 하나를 나타낼때 사용 | -2,147,483,648 ~ 2,147,483,647 |
int | architecture 마다 int32, int64 | - |
uint | architecture 마다 uint32, uint64 | - |
다양한 변수 선언 방법
func main() {
var a int = 10
var b int
c := 7 // var 키워드와 Type 생략
fmt.Println(a, b, c)
}
서로 다른 타입간 연산
func main() {
a := 3
var b float64 = 3.5
var c int = a
// d = a * b 서로 다른 타입간 연산 불가
var e int64 = 7
// f := a * e 같은 int 이지만 서로 크기가 다르므로 연산 불가
fmt.Println(a, b, c, e)
}
위 처럼 서로 다른 타입일 경우 연산이 불가능하다.
func main() {
a := 3
var b float64 = 3.5
var c int = a
d := float64(a * c)
var e int64 = 7
f := a * int(e)
fmt.Println(a, b, c, d, e, f)
}
위와 같이 형변환을 해서 연산하는 경우 연산이 가능하다.
참고문헌
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791197149801
'Go' 카테고리의 다른 글
만들면서 배우는 Https 서버 시리즈 2 (3) | 2024.11.07 |
---|---|
만들면서 배우는 Https 서버 시리즈 1 (11) | 2024.11.06 |
Go lang 으로 간단하게 Image Resizer 만들기 (With TDD) (0) | 2023.09.26 |
Go lang 으로 Binary Tree 만든 코드 (0) | 2022.08.07 |