Type conversion happens when we assign the value of one data type to another. Statically typed languages like
C / C++, Java, provide the support for Implicit Type Conversion but Golang is different, as it doesn’t support the Automatic Type Conversion or Implicit Type Conversion even if the data types are compatible. The reason for this is the Strong Type System of the Golang which doesn’t allow to do this. For type conversion, you must perform explicit conversion.
As per Golang Specification, there is no typecasting word or terminology in Golang. If you will try to search Type Casting in Golang Specifications or Documentation, you will find nothing like this. There is only Type Conversion. In Other programming languages, typecasting is also termed as the type conversion.형변환(type conversion)은 값을 다른 데이터 타입으로 할당할 때 발생합니다. C / C++, Java와 같은 정적 타입 언어들은 암시적 형변환을 지원하지만 Go언어는 그렇지 않습니다. 데이터 타입이 호환되더라도 자동 형변환이나 암시적 형변환을 지원하지 않습니다. 그 이유는 Go언어의 강타입 시스템에서는 허용하지 않기 때문입니다. 형변환을 하기 위해서는 반드시 명시적 형변환으로 수행해야 합니다.
Go언어 스펙을 보면 Type casting이라는 용어가 없습니다. Type casting이란 단어를 스펙이나 문서에서 찾아 볼 수 없고 오직 Type conversion만 존재하며, 다른 프로그래밍 언어에서는 Type casting을 Type Conversion과 혼용하기도 합니다.
출처: GeeksforGeeks
타입 캐스팅의 경우 프로그램 설계 중에 프로그래머가 해당 언어의 캐스팅 연산자를 사용하여 기존 데이터 유형을 다른 데이터 유형으로 의도적으로 변환하는 작업
타입 컨버젼의 경우 데이터 타입이 컴파일러 또는 인터프리터 등을 통해 컴파일러타임, 런타임을 통해 다른 데이터 타입으로 변환되는 작업. 그렇기에 대상 데이터 타입은 변경되는 타입보다 작을 수 없으므로 확장 변환(widening conversion)이라고도 한다. 그리고 가장 중요한 점은 서로 호환이 가능한 데이터 타입에만 적용할 수 있다.
결론적으로, 두 용어는 비슷하게 사용될 수 있지만, 맥락에 따라 차이가 있으며, 특정 언어에서 어떤 용어가 더 일반적으로 사용되는지가 중요하다
var x int8 = 5
// int32 데이터 타입으로 변경
var y int32 = int32(x)
문자형인 byte, rune는 문자열형으로 컨버젼 할때는 string함수를 쓰면 간단하게 된다. 허나 정수를 문자열형으로 타입 컨버젼하거나, 문자열형을 정수로 컨버젼 해야할 경우 strconv 패키지를 이용
포매팅이란 원하는 형태로 출력하는 것
논리형 포매팅
%t
문자열형 포매팅
문자열의 길이를 지정해주려면 포맷 앞에 숫자 넣어주기, 만약 숫자 만큼의 자리수가 안되면 공백을 앞에 채워준다. 하지만 숫자만큼의 자리수가 이미 넘어간다면 글자 그대로 출력이 된다
공백대신 0으로 채워주고 싶은 0을 써줌
%03s
a := "가나"
fmt.Printf("%3s", a)
// ' 가나'
b := "가나다라마"
fmt.Printf("%3s", b)
// "가나다라마"
정수형 포매팅
- 2진수 > %b
- 8진수 > %o
- 15진수 > %x
마찬가지로 공백대신 0을 채워주고 싶으면 0을써줌
실수형 포매팅
기본 형태는 다음과 같다 %f
- 소수점 2자리만 출력하고 싶을때는
.(dot)뒤에 숫자를 써줌
%.2f- 원하는 자릴수로 출력하고 싶을때는 '.'(dot)앞에 숫자를 써줌
%9.3f // 9자리 출력하는데, 소수점은 3자리까지만 출력- 실수부와 지수부 나누어표현
%e
1230000 은 1.23 * 10^6 으로 변경되는데, 이를 1.230000e+06 으로 출력- %f와 %e중 나은지 판단 후 자동출력
%g
기타 포매팅
%T, %v
- %T
- 특정 변수가 값이 어떤 데이터 타입인지 알려줌
- %v
- 특정 변수가 정수형인지 논리형인지 자동으로 판단해 값을 출력