Go16 flag.Var 사용하기 영어를 더 잘했다면 금방 감을 잡았을텐데 ^.^...Var defines a flag with the specified name and usage string. The type and value of the flag are represented by the first argument, of type Value, which typically holds a user-defined implementation of Value.For instance, the caller could create a flag that turns a comma-separated string into a slice of strings by giving the slice the methods of Value; in particular, .. 2026. 1. 27. 고루틴 사용해본 것 복습 분명 이해했다고 생각했는데 코드로 짜보니까 아닌 것 같아서 복기 겸 정리 고루틴은 스레드처럼 os가 관리하는 게 아닌, go 런타임에 의해 제어되는 경량 쓰레드이다.c에서는 pthread() 의 함수의 인자로 void 포인터를 넘겨서, 받는 곳에서 형변환하여 사용하였다.고루틴도 비슷한데 조금 더 많은 인자를 넘길 수 있고 아예 특정 함수 자체를 go라는 키워드를 이용하여 스레드로 실행이 가능하다.go eatingMeal() 기본적으로 고루틴끼리 정보 교환은 채널을 사용한다.채널은 소켓의 느낌이 강한데 (내 의견임) 훨씬 사용이 편리하고 문법도 간편했다.chan 키워드로 채널을 만들 수 있고, make() 함수로 반환값을 받아 특정 변수에 넣어줄 수 있다.events := make(chan Event, .. 2026. 1. 27. Go 채널 Go 채널이란 채널을 통하여 데이터를 주고 받는 통로라 볼 수 있다.채널은 make() 함수를 통해 미리 생성되어야 하며, 채널 연산자 채널은 흔히 goroutine 들 사이 데이터를 주고 받는데 사용되며 상대편이 준비될 때까지 채널에서 대기해주기 때문에 별도의 lock 을 걸지 않고 데이터를 동기화하는데 사용된다. Unbuffered Channelpackage mainimport "fmt"func main() { // 정수형 채널을 생성한다 ch := make(chan int) go func() { var input int fmt.Scanf("%d", &input) ch 사용자에게 입력받은 숫자를 channel 로 전달할 수 있다. Go 채널은 수신자와 송신자가 서로를 기다리는 속성 때문에, 이.. 2026. 1. 15. Go 루틴 Go 루틴 http://golang.site/go/article/21-Go-%EB%A3%A8%ED%8B%B4-goroutine 예제로 배우는 Go 프로그래밍 - Go 루틴 (goroutine)1. Go루틴 Go루틴(goroutine)은 Go 런타임이 관리하는 Lightweight 논리적 (혹은 가상적) 쓰레드(주1)이다. Go에서 "go" 키워드를 사용하여 함수를 호출하면, 런타임시 새로운 goroutine을 실행한다. goroutine은golang.site //출처는 위의 링크Go루틴(goroutine)은 Go 런타임이 관리하는 Lightweight 논리적 (혹은 가상적) 쓰레드(주1)이다. Go에서 "go" 키워드를 사용하여 함수를 호출하면, 런타임시 새로운 goroutine을 실행한다. gorou.. 2026. 1. 15. Go 에러처리, defer, panic 인터페이스를 안 써봐서 그런가 아직까지 Go 가 어느 부분에서 효율적인지 알기가 어렵다.찾아보니 대용량 서비스, 클라우드에서 좋다고 하는데 좀 더 해봐야 알 것 같다. Go 에러type error interface { Error() string} Go 에러는 이 error 인터페이스를 통하여 주고 받게 되는데, 이 interface 는 Error() 라는 하나의 메서드를 갖는다.개발자가 이름이 Error 이고 반환형이 string 인 함수를 만들면 이 인터페이스를 이용할 수 있게 되는 것이다. package mainimport ( "log" "os")func main() { f, err := os.Open("./tmp.txt") if err != nil { log.Fatal(err.Error()).. 2026. 1. 15. 인터페이스 공부하면 공부할수록 go는 컴파일러가 많은 것을 해줌을 알게 되는 것 같다... type Shape interface { area() float64 perimeter() float64}//Rect 정의type Rect struct { width, height float64} //Circle 정의type Circle struct { radius float64} //Rect 타입에 대한 Shape 인터페이스 구현 func (r Rect) area() float64 { return r.width * r.height }func (r Rect) perimeter() float64 { return 2 * (r.width + r.height)} //Circle 타입에 대한 Shape 인터.. 2026. 1. 15. 이전 1 2 3 다음