본문 바로가기

전체 글134

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.
참조형 C언어에서는 없던 개념이다. 개념적인 측면에서 값을 변경할 수는 없고 반드시 초깃값을 기술해 선언하는 포인터와 유사하다.인스턴스에 대한 참조자를 선언하며, 참조형은 반드시 선언과 동시에 초기화가 이뤄져야 한다. int a(10);int &rdata = a; 여기서 rdata는 참조자가 된다. 참조 대상은 a이다.a는 현재 실존하는 실제 데이터이고, rdata는 실제 데이터 a의 값을 참조하는 참조자이다.포인터와 비슷하다. rdata = 5;cout 참조자를 L Value 로 뒀을 때, 그 참조자에 어떠한 값을 대입한다면C언어의 개념이라면: 포인터 변수 rdata의 값이 5가 되면서, 가리키는 주소가 5로 바뀌면서 에러가 발생 (5라는 주소에 뭐가 있는지 모르니까)하지만 여기서는 rdata가 참조하는 .. 2026. 1. 16.
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.