golang32 golang signal과 context 기초 golang에서는 signal과 context를 이용하여 여러가지 제어를 할 수 있습니다. 먼저 signal 제어 방법을 알아볼건데 syscall.SIGINT 와 syscall.SIGTERM 을 알아보겠습니다. syscall.SIGINT는 ctrl+c 에 대한 시그널이고 syscall.SIGTERM은 종료에 대한 시그널입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package main import ( "fmt" "os" "os/signal" "syscall" ) func main() { cancelChan := make(chan os.Signal) signal.Notify(cancelChan, syscall.SIGINT, syscall.SIGT.. 2021. 4. 6. Golang network TCP hello world 예제 이번 글에서는 TCP서버를 열고 거기에 접속하는 사용자에게 "Hello TCP"라는 문자열을 return 해준 후에 connection을 닫는 간단한 프로그램을 만들어보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package main import ( "io" "log" "net" ) func main() { li, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { log.Panic(err) } defer li.Close() for { conn, err := li.Accept() if err != nil { log.Println(err) } io.WriteString(co.. 2021. 4. 5. golang에서 heap 사용하기 파이썬 같은 언어는 기본으로 내장되어 있는 heapq가 사용하기 상당히 쉽고 편리한데에 비해 go에서 heap을 사용하려면 꽤나 복잡한 작업을 해야합니다. 이번 글에서는 go에서 heap을 어떻게 사용하는지 공식문서예제에 있는 코드로 알아보겠습니다. 공식문서의 예제 링크: golang.org/src/container/heap/example_pq_test.go 1 func Pop(h Interface) interface{} cs go의 container/heap의 Pop 함수입니다. 인자로 Interface type을 받아야 합니다. 1 2 3 4 5 type Interface interface { sort.Interface Push(x interface{}) Pop() interface{} } cs In.. 2021. 4. 3. golang 인터페이스 활용 golang에서는 빈 인터페이스를 통해서 여러가지 타입을 받을 수 있습니다. 바로 예시로 넘어가서 확인해보겠습니다. myPrint 함수의 인자를 보면 타입명이 interface{} 입니다. 빈 인터페이스를 나타내는 것으로 모든 타입을 받을 수 있습니다. 원리를 간단하게 살펴보겠습니다. 위 코드처럼 선언하게 되면 run()이란 함수를 가진 구조체 타입들만 해당함수의 인자로 들어올 수 있습니다. 그런데 이러한 조건없이 empty interface로 선언하면 아무조건이 없으므로 모든 타입을 받을 수 있게 됩니다. 이번에는 인터페이스의 형변환에 대해 알아보겠습니다. a는 empty interface type으로 b는 int형으로 선언후 더하기 연산을 해보았습니다. 그러나 위에 빨간줄이 나와있듯이 에러가납니다. .. 2021. 3. 25. 이전 1 ··· 3 4 5 6 7 8 다음