package main
import "fmt"
func main() {
var num1 int = 3 //1. 변수선언(1)
num2 := 7 //2. 변수선언(2)
result := num1 + num2
//3. 출력방법(변수 삽입)
fmt.Printf("%d과 %d의 합은 %d입니다.", num1, num2, result)
}
const
는 한번 선언되면 수정할 수 없다.()
를 사용하여 상수 변수를 여러 개 선언할 수 있다.package main
import "fmt"
//여러 상수 변수 선언
const (
name = "Kim"
RRN = "800101-1000000"
job
)
func main() {
fmt.Println(name, '\n', RRN, '\n', job)
}
종류 | 설명 |
---|---|
+ | 덧셈, 문자 결합 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
% | 나눈 뒤 나머지 |
//안돼요!
num := count++ (선언과 동시에 대입 불가)
++count (전위 연산자 금지!)
//돼요!
count1, count2 := 1, 10.4
count1++
count2--
종류 | 설명 |
---|---|
:= | 변수 선언 후 대입 |
+= | 값을 더한 후 대입 |
-= | 값을 뺀 후 대입 |
*= | 값을 곱한 후 대입 |
/= | 값을 나눈 후 대입 |
%= | 값을 나눈 나머지를 대입 |
&= | 값의 AND연산 후 대입 |
^= | 값의 XOR연산 후 대입 |
&^= | 값의 AND NOT 비트 연산 후 대입 |
<<= | 비트를 왼쪽으로 이동 후 대입 |
>>= | 비트를 오른쪽으로 이동 후 대입 |
종류 | 설명 |
---|---|
&& | 둘 다 참이면 참을 반환 |
! | 참이면 거짓, 거짓이면 참을 반환 |
true
), 그렇지 않으면 거짓(false
)을 반환한다.종류 | 설명 |
---|---|
== | 두 값이 같은지 비교 |
!= | 두 값이 다른지 비교 |
< | 오른쪽 값이 큰지 비교 |
<= | 오른쪽 값이 크거나 값은지 비교 |
> | 왼쪽 값이 큰지 비교 |
>= | 왼쪽 값이 크거나 같은지 비교 |
package main
import 'fmt'
func main() {
var num1, num2, num3 int
fmt.Print("정수 3개를 입력하세요")
fmt.Scanln(&num1, &num2, &num3) //입력받기
fmt.Println(num1 + num2 + num3)
}
Scanln
을 사용해 특정 값을 사용자로부터 받을 수 있다는 걸 알게 되었다!go언어도 다른 언어와 마찬가지로 자료형이 존재한다.
이 챕터에서는 자료형에 대한 간단한 내용만 알아보자!
Back Quote(문자열
)로 문자열 표현하기
: 모양이 인용부호(' ')와 비슷하지만 다른 기호이다.
: Back Quote 안에 있는 문자열은 어느 기호든 문자열 자체로 인식한다.
: 예를 들어, \n
은 개행의 역할을 하지 않고 단순히 문자열로 출력된다.
이중인용부호("문자열")로 문자열 표현하기
: ""안에 이스케이프 시퀀스(\n
) 문자열들은 특정 기능을 수행한다.
: ""안에서 엔터를 쳐도, 한 줄에 표현된다.
package main
import "fmt"
func main() {
// Raw String Literal
// 출력: hello \n Golang
var rawLiteral string = `hello \n Golang`
// Interpreted String Literal
// 출력: hello
// Golang
var interLiteral string = "hello \nGolang"
// 출력: 쉽게 배우는
// Golang
plusString := "쉽게 배우는 " + "\n" + "Golang"
}
num1
을 float32
로 변환할 때는 float32(num)
이라고 써야 한다.package main
import "fmt"
func main() {
var num int = 10
var changef float32 = float32(num) //int형을 float32형으로 변환
changei := int8(num) //int형을 int8형으로 변환
var str string = "goorm"
changestr := []byte(str) //바이트 배열
str2 := string(changestr) //바이트 배열을 다시 문자열로 변환
}
우리는 go에서 형변환할 때, 변환하고자 하는 자료형을 명시해야한다는 점을 알게 되었다. 그렇다면 아래와 같이, int형의 두 변수를 계산한 값을 float형에 담는다면 어떻게 될까? (3/4를 한 값인 0.75가 그대로 들어갈까?)
package main
import "fmt"
func main() {
var num1, num2 int = 3, 4
var result float32 = num1 / num2
fmt.Printf("%f", result) //런타임 에러!
}
결과는 런타임 에러가 발생한다.
이유1) 연산식의 결괏값과 그것을 저장하려는 변수의자료형이 다르므로
이유2) go에서는 다른 언어처럼자동형변환이 발생하지 않기에