문자열의 표현
- Go언어에서는 문자열을 표현하는 데 두 가지 방법이 있다.
+
연산자는 숫자 뿐만이 아니라 문자열도 합할 수 있다! 아래 두 방법 모두 +
연산자를 이용해 표현할 수 있다.
Back Quote('문자열')
- 모양이 이용부호('')와 비슷해서 혼동할 수 있지만 다른 기호이다.
- Back Quote로 둘러 싸인 문자열은 Raw String Literal이라고 부른다.
- 쉽게 말해, 이 안에 있는 문자열은 어느 기호든 문자열 자체로 인식되는 Raw String값이라는 것!
- 예를 들어 개행의 의미인
\n
이 Back Quote에 있으면 개행 기능이 되지 않고 문자열 자체로 출력이 된다.
이중인용부호("")
- Interpreterd String Iiteral 쉽게 말해, 안에 있는 문자열에 이스케이프 시퀀스같은 문자열들을 특별한 의미로 해석돼 그 기능을 수행한다는 것!
- 이중인용부호를 사용할 시에는 복수라인에 걸쳐 쓸 수 없다.
- 코딩을 할 떄 아무리 엔터를 치고 길게 쳐도 한 줄에 표현된다는 뜻!
- 하지만
\n
과 같은 기호가 있으면 개행의 의미로 해석돼 여러 라인에 걸쳐 쓸 수 있다.
코드
package main
import "fmt"
func main() {
// Raw String Literal. 복수라인.
var rawLiteral string = `golang 배워봅시다요! \n Golang`
// Interpreted String Literal
var interLiteral string = "golang 배워봅시다요! \nGolang"
rawLiteral2 := `안녕 \n`
interLiteral2 := "하이 \n방가"
plusString := "안녕하세요 " + "hey\n" + "Golang"
fmt.Println(rawLiteral)
fmt.Println()
fmt.Println(interLiteral)
fmt.Println()
fmt.Println(rawLiteral2)
fmt.Println()
fmt.Println(interLiteral2)
fmt.Println()
fmt.Println(plusString)
}
출력
golang 배워봅시다요! \n Golang
golang 배워봅시다요!
Golang
안녕 \n
하이
방가
안녕하세요 hey
Golang
자료형의 변환
int
형으로 표현되어 있는 데이터 표현방식을 float32
형으로 바꾸거나, int
형으로 표현되어 있는 데이터의 표현방식을 uint
형으로 바꾸는 것이 바로 '자료형의 변환'
- 즉, 자료형의 변환이라는 것은 데이터의 표현방식을 바꾸는 것, 이러한 자료형의 변환은 다른 언어들을 비추어 보았을 때 두 종류가 있다.
- 자동 형 변환 (묵시적 형 변환)
- 강제 형 변환 (명시적 형 변환)
- Go 언어에서는 형 변환을 할 때 변환을 명시적으로 지정해주어야한다!!
- 예을 들어 float32에서 uint로 변환할 때, 암묵적 변환은 일어나지 않으므로
uint
(변수이름)과 같이 반드시 변환을 지정! 만약 없다면 런타임 에러가 발생 할 수 있다!
코드
package main
import "fmt"
func main() {
var num int = 16
var changef float32 = float32(num) //int형을 float32형으로 변환
changei := int8(num) //int형을 int8형으로 변환
var str string = "goorm"
changestr := []byte(str) //바이트 배열
str2 := string(changestr) //바이트 배열을 다시 문자열로 변환
fmt.Println(num)
fmt.Println(changef, changei)
fmt.Println(str)
fmt.Println(changestr)
fmt.Println(str2)
}
출력
16
16 16
goorm
[103 111 111 114 109]
goorm
코드
package main
import "fmt"
func main() {
var num1, num2 int = 3, 4
var result float32 = num1 / num2
fmt.Printf("%f", result)
}
- 런타임 에러 발생, 연산식과 결과값과 그것을 저장하려는 변수의 자료형이 다르기 떄문!
- Go언어는 자동으로 형 변환이 되지 않는다!
- 연산 결과값의 자료형과 피연산자의 자료형이 일치해야한다!
코드
package main
import "fmt"
func main() {
var num1, num2 int = 3, 4
var num3 float32 = float32(num1)
var num4 float32 = float32(num2)
var result float32 = num3 / num4
fmt.Printf("%f", result)
}
출력
0.750000