일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- range
- tcp
- FOR
- 책
- go
- bitcoin
- JavaScript
- Callback
- 리뷰
- C
- Close
- go언어
- package
- c++
- File
- Python
- window
- GO 언어
- Linux
- write
- 영화
- channel
- API
- windows
- http
- Sync
- mutex
- Golang
- json
- install
- Today
- Total
목록Golang (16)
Code Habit
앞에서 포스팅한 "net/http" 패키지로 http 서버 구현 후 Get/Post 요청을 구분하여 처리하는 예제이다. 예제 - 서버 // main.go package main import ( "fmt" "io/ioutil" "net/http" ) func handler(rw http.ResponseWriter, req *http.Request) { fmt.Println("Method : ", req.Method) fmt.Println("URL : ", req.URL) fmt.Println("Header : ", req.Header) b, _ := ioutil.ReadAll(req.Body) defer req.Body.Close() fmt.Println("Body : ", string(b)) switch..
golang은 "net/http" 패키지를 통해 간편하게 http 서버를 만들 수 있다. 다음은 서버를 구현하는데 필요한 함수이다. func ListenAndServe(addr string, handler Handler) error : HTTP 연결을 받고, 요청에 응답 func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) : 경로별로 요청을 처리할 핸들러 함수 등록 사용예제 // main.go package main import ( "net/http" ) func main() { http.HandleFunc("/hello", func(res http.ResponseWriter, req *http.Request) { res.Wri..
golang에서 "net" 패키지에서 TCP 프로토콜을 제공한다. 간단히 TCP 프로토콜 에코서버와 클라이언트를 만들어 보겠다. 서버 예제 // main.go package main import ( "fmt" "io" "net" ) func handler(conn net.Conn) { recv := make([]byte, 4096) for { n, err := conn.Read(recv) if err != nil { if err == io.EOF { fmt.Println("connection is closed from client : ", conn.RemoteAddr().String()) } fmt.Println("Failed to receive data : ", err) break } if n > 0 ..
"container/list" 패키지를 사용하면 go에서 연결리스트를 사용할 수 있다. 다음은 "container/list"에서 연결리스트를 사용하기 위해 제공하는 함수이다. func New() *List: 연결 리스트 생성 func (I *List) PushBack(v interface{}) *Element : 맨 뒤에 노드 추가 func (I *List) PushFront(v interface{}) *Element : 맨 앞에 노드 추가 func (I *List) PushBackList(other* List) : 맨 뒤에 다른 리스트를 붙임 func (I *List) PushFrontList(other* List) : 맨 앞에 다른 리스트를 붙임 func (I *List) InsertAfter(v i..
마샬링 논리적 구조를 로우 바이트로 변경하는 것을 마샬링 or 인코딩이라 한다. 즉 Go 자료형을 바이트 슬라이스로 변경하는 것이다. 언마샬링 반대로 로우 바이트를 논리적 자료 구조로 변경하는 것을 언마샬링 or 디코딩이라 한다. encoding/json 패키지의 다음 함수들을 통해 go 자료형을 Json데이터로 변환하거나 반대로 Json데이터를 go 자료형으로 변환할 수 있다. func Marshal(v interface{})([]byte, error): Go 언어 자료형 -> JSON 데이터 변환 func MarshalIndent(v interface{}, prefix, indent string)([]byte, error): Go 언어 자료형 -> JSON 데이터 변환 & 들여쓰기 func Unmar..
time 패키지는 현재 시간을 구하거나, 일정한 시간을 측정하는 등 시간 관련 기능을 다룰 때 사용한다. - 현재 시간 구하기 & 포맷 변경 // main.go package main import ( "fmt" "time" ) func main() { // 현재 시간 now := time.Now() fmt.Println(now) // 2020-06--19 14:45:56.1516017 +0900 KST m=+0.006982201 // yyyy-mm-dd hh:mm:ss 형식으로 포맷 custom := now.Format("2006-01-02 15:04:05") fmt.Println(custom) // 2020-06-19 14:45:56 custom = now.Format("2006-01-02") fmt...
golang에서 os 패키지를 사용해 파일 Read/Write를 편하게 할 수 있다. 다음은 사용되는 함수이다. func OpenFile(name string, flag int, perm FileMode)(file *File, err error) : 파일 플래그, 파일 모드를 지정하여 파일 열기 func (f* File) Close() error : 파일을 닫음 func (f* File) Write(b []byte) (n int, err error) : 파일에 값을 씀. 쓴 데이터의 길이와 에러 값 리턴 func (f* File) Read() (b []byte)(n int, err error) : 파일의 내용을 읽음. byte형식으로 기록되며 읽은 Count와 에러 값 리턴 사용 예제 // main.go..
golang에서는 다양한 문자열 관련 함수들을 제공한다. 그 중 문자열 파싱할 때 자주 사용하는 몇 가지 함수들만 알아보겠다. func Contains(s, substr string) bool : s 안에 substr 이 포함되어 있는지 검사 -> true : 포함, false : 불포함 func ContainsAny(s, chars string) bool : s 안에 chars의 문자가 포함되어 있는지 검사 -> true : 포함, false : 불포함 func Count(s, substr string) int : s안에 substr문자열이 몇번 나오는지 검사 -> 개수 리턴 func Index(s, substr string) int : s안에 substr 의 위치를 구함(첫글자). 리턴값이 -1이면 ..