(Go : basic) 6. string

Posted by : at

Category : Go


string

package main

import "fmt"
import "unicode/utf8"

func main() {
	//문자열
	//큰따옴표 "" , 백스쿼트 `` 작성
	//Golang : 문자 char 타입 존재하지 않음 -> rune(int32)로 문자 코드 값으로 표현
	//문자 : 작은따옴표 '' 로 작성
	//자주 사용 하는 escape : \\, \', \", \a(콘솔벨), \b(백스페이스), \f(쪽바꿈), \n(줄바꿈), \r(복귀), \t(탭)

	//예제1
	var str1 string = "c:\\go_study\\src\\"
	str2 := `c:\go_study\src\`

	fmt.Println("ex1 : ", str1, "\t", "ok1")
	fmt.Println("ex1 : ", str2, "\t", "ok2")

	//예제2
	var str3 string = "Hello, world!"
	var str4 string = "안녕하세요"
	var str5 string = "\ud55c\uae00"             // 한글 유니코드(4자리는 소문자 -> u)
	var str6 string = "\U0000d55c\U0000ae00"     // 한글 유니코드(8자리는 소문자 -> U)
	var str7 string = "\xed\x95\x9c\xea\xb8\x80" // UTF-8 인코딩 바이트 코드

	fmt.Println()
	fmt.Println("ex2 : ", str3)
	fmt.Println("ex2 : ", str4)
	fmt.Println("ex2 : ", str5)
	fmt.Println("ex2 : ", str6)
	fmt.Println("ex2 : ", str7)
	fmt.Println()

	//예제3
	//길이(바이트수)
	fmt.Println("ex3 : ", len(str3))
	fmt.Println("ex3 : ", len(str4))
	fmt.Println()

	//예제4
	//길이(실제 길이)
	fmt.Println("ex4 : ", utf8.RuneCountInString(str3))
	fmt.Println("ex4 : ", utf8.RuneCountInString(str4))
	fmt.Println("ex4 : ", len([]rune(str4)))
}
package main

import "fmt"

func main() {
	//문자열 표현
	//문자열 : UTF-8 인코딩 (유니코드 문자 집합) -> 바이트 수 주의

	//예제1
	var str1 string = "Golang"
	var str2 string = "World"
	var str3 string = "고프로그래밍"

	fmt.Println("ex1 : ", str1[0], str1[1], str1[2], str1[3], str1[4], str1[5])
	fmt.Println("ex1 : ", str2[0], str2[1], str2[2], str2[3], str2[4])
	fmt.Println("ex1 : ", str3[0], str3[1], str3[2], str3[3], str3[4], str3[5])
	fmt.Println("ex1 : ", str3[0], str3[1], str3[2], str3[3], str2[4], str3[5], str3[len(str1)-2])

	//예제2
	fmt.Printf("ex2 : %c %c %c %c %c %c\n", str1[0], str1[1], str1[2], str1[3], str1[4], str1[5])
	fmt.Printf("ex2 : %c %c %c %c %c\n", str2[0], str2[1], str2[2], str2[3], str2[4])
	fmt.Printf("ex2 : %c %c %c %c %c %c\n", str3[0], str3[1], str3[2], str3[3], str3[4], str3[5]) //문제 발생

	conStr := []rune(str3)
	fmt.Printf("ex2 : %c %c %c %c %c %c\n", conStr[0], conStr[1], conStr[2], conStr[3], conStr[4], conStr[5])

	//예제3
	for i, char := range str1 {
		fmt.Printf("ex3 : %c(%d)\t", char, i)
	}

	fmt.Println()

	for i, char := range str2 {
		fmt.Printf("ex3 : %c(%d)\t", char, i)
	}

}

string 연산

package main

import "fmt"

func main() {
	//문자열 연산
	//추출, 비교, 조합(결합)

	//예제1(추출)
	var str1 string = "Golang"
	var str2 string = "World"

	fmt.Println("ex1 : ", str1[0:2], str1[0])
	fmt.Println("ex1 : ", str2[3:], str2[0])
	fmt.Println("ex1 : ", str2[:4], str2[0])
	fmt.Println("ex1 : ", str1[1:3])
}
package main

import "fmt"

func main() {

	//예제1(비교)
	str1 := "Golang"
	str2 := "World"

	fmt.Println("ex1 : ", str1 == str2) //바이트로 비교
	fmt.Println("ex1 : ", str1 != str2)
	fmt.Println("ex1 : ", str1 > str2)
	fmt.Println("ex1 : ", str1 < str2)
}
package main

import (
	"fmt"
	"strings"
)

func main() {
	//문자열 조합은 한 번 생성 후 수정 불가 이유로 새로 계속해서 생성 된다.
	//효율적 사용을 위해서 되도록 join 함수 사용 추천

	//예제1(결합 : 일반연산)
	str1 := "Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to " +
		"write programs that get the most out of multicore and networked machines, while its novel " +
		"type system enables flexible and modular program construction. Go compiles quickly to machine " +
		"code yet has the convenience of garbage collection and the power of run-time reflection."
	str2 := "It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language."

	fmt.Println("ex1 : ", str1+str2)

	//예제2(결합 : Join)
	strSet := []string{} //슬라이스 선언
	strSet = append(strSet, str1)
	strSet = append(strSet, str2)
	fmt.Println("ex2 : ", strings.Join(strSet, ""))
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links