큰따옴표와 백쿼드는 그 쓰임이 다르다. 백쿼드로 문자열을 묶으면 문자열 안의 특수문자가 일반문자처리가 된다. 반면 큰따옴표는 특수문자가 동작한다. 백쿼드로 묶으면 여러 줄에 걸쳐 문자열을 쓸 수있지만 큰따옴표로는 한 줄만 묶을 수 있다.
go는 UTF-8 문자코드를 표준 문자로 사용한다. UTF-8은 다국어 문자를 지원하고 문자 크기를 절야ㅁㄱ할 목적으로 고안된 문자 코드이다. 자주 사용되는 영문자, 숫자 일부 특수문자를 1바이트로 하고, 그 외 다른 문자는 2~3바이트로 표현한다. 영문자, 숫자등이 1바이트로 표현되어 utf-16에 비해 크기가 절약되며, ANSI 코드와 1:1 대응이 되어 바로 변환도 가능하다.
문자 하나를 표현하는데 rune타입으로 쓴다. 한 글자가 utf-8기준으로 1~3바이트이기 떄문에 대략 3바이트가 필요하다. 그러나 go 언어 기본 타입에서는 3바이트 정수 타입은 제공되지 않기 때문에 rune 타입은 4 바이트 정수 타입인 int32타입의 별칭 타입이다. 즉 같은 타입이란 말이다.
var char []rune = ['한', 'dnks']
len() 내장 함수를 이용해서 문자열 크기를 알 수 있다. 이때 크기는 문자 수가 아니라 말 그대로 문자열이 차지하는 메모리의 크기이다. 파이썬의 경우 len()은 글자 수이지만 go에서는 문자열 메모리 크기이다.
string 타입, rune 슬라이스 타입인 []rune 타입은 상호 타입 변환이 가능하다. 여기서 슬라이스는 길이가 변할 수 있는 배열이다. string타입과 []rune타입은 모두 문자들의 집한을 나타내기 때문에 상호 타입 변환이 가능하다. 이렇게 타입 변환을 할 경우 rune 배열의 각 요소에는 문자열의 각 글자가 대입된다. string타입을 []rune타입으로 변환하면 각 글자들로 이뤄진 배열로 변환되고, 이때 len()함수에 반환된 배열을 넣으면 요소의 개수가 반환된다.