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에서는 다른 언어처럼자동형변환이 발생하지 않기에