- 잘 만들어둔 라이브러리를 사용하자.
- 주의점은 라이브라리는 그래도 분명하게보이지만 많은 라이브러리들은 고가 필요로하는 특수한 도메인 지식이 필요할 수 있다.(보안이라던가) 이 이상의 내용은 책의 범위를 넘기에 다른 것을 살펴보기로.
Strings
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(
// true
strings.Contains("test", "es"),
// 2
strings.Count("test", "t"),
// true
strings.HasPrefix("test", "te"),
// true
strings.HasSuffix("test", "st"),
// 1
strings.Index("test", "e"),
// "a-b"
strings.Join([]string{"a","b"}, "-"),
// == "aaaaa"
strings.Repeat("a", 5),
// "bbaa"
strings.Replace("aaaa", "a", "b", 2),
// []string{"a","b","c","d","e"}
strings.Split("a-b-c-d-e", "-"),
// "test"
strings.ToLower("TEST"),
// "TEST"
strings.ToUpper("test"),
)
}
- 스트링을 바이너리 데이터로 다루고 싶거나 반대의 경우
arr := []byte("test")
str := string([]byte{'t','e','s','t'})
Input / Output
- 파일에 대해서 보기 전에 io 패키지를 먼저 봐야한다. io 패키지는 함수가 별로 없다 .하지만 대부분의 인터페이스가 다른 패키지에서 사용된다. Reader와 Writer라는 두개의 메인 인터페이스가 있다. 전자는 Read메서드로 읽는데에 도움을 주고 후자는 Write메서드로 쓰는데에 도움을 준다. 고에서 많은 함수들은 둘을 인자로 받는다. io패키지는 Copy라는 함수가 있는데 이는 Reader로 부터 Writer로 정보를 복사하는 것이다.
func Copy(dst Writer, src Reader) (written int64, err error)
- string이나 []byte를 읽거나 쓰기 위해 우리는 bytes 패키지의 Buffer를 사용할 수 있다.
var buf bytes.Buffer
buf.Write([]byte("test"))
- Buffer는 꼭 초기화할 필요가 없다. 그리고 Reader와 Writer인터페이스의 도움을 받는다. 당신은 이것을 []byte로 바꿀 수 있다. buf.Bytes()를 이용해서. 만약 당신이 문자열로부터 읽어와야 한다면, 당신은 strings.NewReader를 사용할 수 있다. 이는 buffer를 이용하는 것보다 효율적이다.
Files & Folders