Search
Duplicate
📒

[Tucker의 Go] 02. GO의 기본과 변수

상태
완료
수업
Tucker의 Go
주제
기본개념
4 more properties
참고

Go언어의 특징

NOTE
Go는 정적 타입 컴파일 언어의 효율성과 동적 언어처럼 쉬운 프로그래밍을 할 수 있도록 하는 것을 목표로한다!
go의 특징
Go언어에는 아래와 같은것이 없다.
클래스
상속
생성자
final
제네릭

Go언어 적용가능한 프로젝트

NOTE
웹 서버
웹 브라우저
검색 엔진
컴파일러
운영체제

Go언어 맛보기

NOTE
// 이 코드가 속한 패키지가 어디인가? // 패키지명은 아무렇게 작성해도 되지만, main은 특별함 // main => 프로그램 시작점(프로그램 파일의 시작점을 명시) // go는 main 패키지 1개와(무조건 1개), 다른 패키지로 구성(여기는 이름 중복되도 됨) package main // 패키지명 fmt를 가져온다. import "fmt" // func => 함수선언 // main은 특별한 키워드! => 프로그램 시작점 func main() { fmt.Println("Hello Go World!") } /* 주석 블록적용 */
Go
복사

Go 변수

NOTE
변수 ⇒ 값을 저장하는 메모리 공간을 가리키는 이름!
값을 저장한다 ⇒ 하드디스크, 메모리
하드디스크 - 전원이 꺼져도 남아있다, 느리다
메모리 - 전원이 꺼지면 사라진다, 빠르다
프로그램 ⇒ 결국 데이터를 연산/조작 하는 일
컴퓨터는 게임, 음악, 비디오를 틀어주는건 결국 데이터 연산/조작으로 이루어짐

변수의 4가지 속성

NOTE
// var 타입 이름 = 값 var a int = 10
Go
복사
이름
주소
타입

변수 선언방법 및 기본값

NOTE
값을 생략했을때 기본으로 들어가는 값
package main import "fmt" func main() { // 1. 가장 기본적인 방법 var a int = 3 // 2. 값을 생략(기본값이 할당됨 var b int // 3. 타입을 생략 (값을 보고 자동할당됨) var c = 4 // 4. 타입과 var을 생략 (:가 var을 대처해줌) d := 5 var e = "Hello" f := 3.14 fmt.Println(a, b, c, d, e, f) }
Go
복사
변수 선언에는 여러 가지 방법이 존재!

타입 변환

NOTE
연산의 각 항목의 타입은 반드시 같아야 한다!
func main() { a := 3 // int = 64 bit = int64 var b float64 = 3.5 var c int = int(b) // float64 => int 변환(소수점 아래가 사라짐) d := float64(a) * b var e int64 = 7 f := a * int(e) // int와 int64는 다름! fmt.Println(a, b, c, d, e, f) }
Go
복사
go는 매우강한 타입을 검사한다 (int와 int64도 엄연히 다름!)

변환 주의사항

타입별 범위
func main() { var a int16 = 3456 // int16 - 2byte 정수 var b int8 = int8(a) // int16 -> 1nt8 fmt.Println(a, b) // 3456, -128 }
Go
복사
int8로 변환해서 int16의 값을 모두 담지못해 초과해버림!
위의 코드를 이미지로 표현

변수 범위

NOTE
// 패키지 전역변수 (어디서나 쓸 수 있음) var g int = 10 func main() { var m int = 20 // 변수의 범위 (중괄호 내부에서만 속한다! { var s int = 50 fmt.Println(m, s, g) } // 이곳에서 s를 사용하면 에러가뜸! // m = s + 20 }
Go
복사

2진수 실수표현

NOTE
float 32 표현방법 367812, 4 ⇒ 0.367812 * 10^4 ⇒ 3678.12
실제 나타낼 수 있는 범위
func main() { var a float32 = 1234.523 var b float32 = 3456.123 var c float32 = a * b // 4,266,663.334329 var d float32 = c * 3 // 12,799,990.002987 // 7자리까지 정밀도를 나타내서 실제값과 오차가 있음 // fmt.Println(a) // 1234.523 fmt.Println(b) // 3456.123 fmt.Println(c) // 4.266663e+06 fmt.Println(d) // 1.2799989e+07 }
Go
복사