티스토리 뷰
1) 문자열 (Strings)
문자열을 값으로 저장하는 자료셩으로 제어, 순수 문자열로 구분합니다.
문자열의 크기는 일반적으로 1Byte가 한 문자를 저장하지만, 한글, 중국어 등과 같은 문자는 3Byte가 한문자를 저장하는 경우도 있습니다.
2) 문자열 선언 (String Define)
package main
import "fmt"
func main() {
// String assignments
var sDefault string
var sValueK string = "고프로그램"
sValueE := "GoProgram"
// String assignment confirmation
fmt.Println(sDefault) // "" Blank
fmt.Println(sValueK) // 고프로그램
fmt.Println(sValueE) // GoProgram
// String length
fmt.Println(len(sDefault)) // 0
fmt.Println(len(sValueK)) // 15
fmt.Println(len(sValueE)) // 9
}
- 문자열 선언입니다.
문자열의 일반적인 선언은 var stringName string 형태로 선언하면 된다.
초기값 할당 선언은 var stringName string = "value" 형태로 선언하면 된다.
단축형 할당 선언은 stringName := "value" 형태로 선언하면 된다.
문자열의 초기값을 할당하지 않으면 "" blank 값을 가지며 길이는 0 이다.
한국어의 경우 한글자에 3Byte의 길이를 사용한다.
3) 제어 문자열 (Control String)
|
package main import ( "fmt" ) func main() { // Result: // GoProgram fmt.Println("Result:" + "\n" + "GoProgram") // GoProgram fmt.Println("Result:" + "\r" + "GoProgram") // Result: GoProgram fmt.Println("Result:" + "\t" + "GoProgram") // Result:\GoProgram fmt.Println("Result:" + "\\" + "GoProgram") // Result:"GoProgram fmt.Println("Result:" + "\"" + "GoProgram") } |
- 제어 문자열은 \ 기호로 시작하는 문자열입니다.
문자의 출력에 영향을 주는 문자로서
\n : New line
\r : Carriage return
\t : Tab
\\ : Backslash
\" : Double quote 등이 있습니다.
4) 문자열 연산 (String Operation)
|
package main import ( "fmt" ) func main() { var sValueK string = "고프로그램" var sValueE string = "GoProgram" // 문자열 비교 하기 fmt.Println(sValueK == sValueE) // false fmt.Println(sValueK != sValueE) // true fmt.Println(sValueK < sValueE) // false fmt.Println(sValueK <= sValueE) // false fmt.Println(sValueK >= sValueE) // true fmt.Println(sValueK > sValueE) // true // 문자열 더하기 fmt.Println(sValueK + " " + sValueE) // 고프로그램 GoProgram addString := sValueK + " " + sValueE fmt.Println(addString) // 고프로그램 GoProgram addString1 := sValueK addString1 += " " addString1 += sValueE fmt.Println(addString1) // 고프로그램 GoProgram } |
- 문자열은 비교 연산이 가능합니다.
문자열을 연결하려면, + 기호를 활용하여 연결 할 수 있습니다.
5) 문자열 길이 (String Length)
|
package main import ( "fmt" "unicode/utf8" ) func main(){ var sDefault string var sValueK string = "고프로그램" var sValueE string = "GoProgram" // String length fmt.Println(len(sDefault)) // 0 fmt.Println(len(sValueK)) // 15 fmt.Println(len(sValueE)) // 9 // UTF-8 Type Length fmt.Println(utf8.RuneCountInString(sDefault)) // 0 fmt.Println(utf8.RuneCountInString(sValueK)) // 5 fmt.Println(utf8.RuneCountInString(sValueE)) // 9 // String Index fmt.Println(string(sValueE[0])) // G fmt.Println(string(sValueE[len(sValueE) - 1])) // m } |
- 문자열의 길이를 구하는 기능입니다.
문자열의 길이는 Len 함수를 사용하여 구할 수 있습니다.
하지만, 한글, 중국어, 일어 등과 같이 3Byte 를 사용하는 문자열은 길이가
이상하게 결과를 도출합니다.
이 경우에는 RuneCountInString 함수를 사용하여 길이를 구할 수 있습니다.
문자열은 Index 를 가지고 있는데 첫번째 index 는 0 에서 시작합니다.
6) 문자열의 출력
|
package main import ( "fmt" "strings" ) func main() { var sValueK string = "고프로그램" var sValueE string = "GoProgram" // 문자열 출력 r := []rune(sValueK) fmt.Println(string(r[0])) // 고 fmt.Println(string(sValueK[0])) // ê fmt.Println(string(sValueE[0])) // G // string package sPackage := " This is example " fmt.Println(strings.HasPrefix(sPackage, " Th")) // true fmt.Println(strings.HasSuffix(sPackage, "le ")) // true fmt.Println(strings.Contains(sPackage, "Test")) // false fmt.Println(strings.Index(sPackage, "i")) // 2 fmt.Println(strings.LastIndex(sPackage, "i")) // 6 fmt.Println(strings.Replace(sPackage, "Th", "th", 2)) // this is example fmt.Println(strings.Count(sPackage, "i")) // 3 fmt.Println(strings.Count(sPackage, "is")) // 2 fmt.Println(strings.Repeat(sPackage, 2)) // This is exampleThis is example fmt.Println(strings.ToUpper(sPackage)) // THIS IS EXAMPLE fmt.Println(strings.ToLower(sPackage)) // this is example fmt.Println(strings.Trim(sPackage, "\r\n\t")) // This is example fmt.Println(strings.TrimLeft(sPackage, " ")) //This is example fmt.Println(strings.TrimRight(sPackage, "\r\n\t ")) // This is example sPackage1 := "This;is;Test;string;example" rPackage := strings.Fields(sPackage) rPackage1 := strings.Split(sPackage1, ";") for _, val := range rPackage { fmt.Println(val) } for _, val := range rPackage1 { fmt.Println(val) } rTOs := strings.Join(rPackage, "+") fmt.Println(rPackage, rTOs) } |
- 문자열의 출력 기능입니다.
출력에 있어 주의 할 내용은 1Byte와 3Byte 문자에 따라 다르게 작동하므로
UTF-8 코드 자료인 rune 를 활용하여 출력합니다.
문자열의 출력은 strings 패키지를 활용하여 제어 가능한 함수들은
HasPreffix : 시작문자 비교하여 같으면 true
HasSuffix : 종료문자 비교하여 같으면 true
Contains : 포함문자 비교하여 있으면 true
Index : 첫번째 만나는 위치 0 부터 시작
LastIndex : 뒤에서 처음 만나는 위치를 앞에서부터 카운터
Replace : 문자열을 교체
Count : 문자열이 포함된 횟수
Repert : 반복해서 출력
Upper : 문자열을 대문자로 전환
Lower : 문자열을 소문자로 전환
Trim : 왼쪽, 오른쪽 문자 삭제
TrimLeft : 왼쪽 문자 삭제
TrimRight : 오른쪽 문자 삭제
Field : 문자열을 공백으로 분리하여
Split : 문자열을 분리 문자를 사용하여 분리
Join : 분리된 문자열을 연결문자 사용하여 조합 합니다.
보다 많은 내용은 http://golang.org/pkg/strings 에서 알수있습니다.
특히 출력에서 숫자를 문자로 또는 문자를 숫자로 바꾸는 경우가 많은데
이 경우에는 strconv.Atoi, strconvItoa 함수를 활용하시면 편리합니다.
마지막으로 문자열의 내용을 출력할 때는
range 와 for 문을 결합하여 사용하시면 편리합니다.
'GO Language' 카테고리의 다른 글
[GO] Grid Library (0) | 2017.05.28 |
---|---|
[GO] JWT Library (0) | 2017.05.26 |
[GO] 기초 자료 형 ( Elementary data types ) (0) | 2016.08.23 |
[GO] 변수(Variables) (0) | 2016.08.22 |
[GO] 상수(Constants) (0) | 2016.08.22 |