Dev/go

    [Go] 슬랙앱 만들기 위한 여정 - Hello world

    고랜드로 /Users/use-name/GolandProjects/awesomeProject 에 프로젝트를 만들고 build 설정 Go build 해놨다. 그리고 헬로우 월드를 입력해봤다. package main import "fmt" func main() { fmt.Println("hello world") } 음.. 고랭 쓴지 2년(?) 넘 오래되서 다 까먹어버렸다. 그냥 아예 새로운 언어배우는 수준이다. 일단 오늘은 여기까지 ㅋ 터커님의 고랭책을 하나 구입해둬야겠다. 내 목표는 고랭으로 슬랙앱을 만드는것 1. 영어단어 앱 2. 뉴스 크롤링 하는 앱

    vscode terminal with go scanf()

    vscode ternimal package main import "fmt" func main() { var t int fmt.Scanf("%d", &t) for { var a, b int fmt.Scanf("%d %d", &a, &b) fmt.Printf("%d\n", a+b) t = t - 1 if t == 0 { return } } } 결과가 이상함. git bash git bash 에서는 제대로 나옴 해결방법 그냥 scanf 뒤에 newline (\n) 다 넣어주면 됨.

    Russ Cox

    research.swtch.com/interfaces research!rsc: Go Data Structures: Interfaces Go Data Structures: Interfaces Posted on Tuesday, December 1, 2009. Go's interfaces—static, checked at compile time, dynamic when asked for—are, for me, the most exciting part of Go from a language design point of view. If I could export one feature of research.swtch.com 언젠간 보겠지..

    [golang] 패키지 만들어보기

    패키지 메인 패키지를 임포트해서 사용해보다가 패키지를 만들어보겠습니다.😎 만든 패키지는 만들어서 GOPATH 의 src 아래에 넣어야지 인식이 가능합니다. go env 명령어로 GOPATH 를 확인하고 패키지를 만들어줍니다. 저같은 경우는 C:\go-workspace\src 밑에 cal 폴더를 만들고 안에 sum.go 를 만들었습니다. // Sum.go package cal // Sum function func Sum(a int, b int) int { return a + b } 다른곳에서 이제 사용이 가능합니다. 함수 첫글자를 대문자로 해야지 그 함수를 아래처럼 외부에서 사용가능합니다. package main import ( "cal" "fmt" ) func main() { result := cal.S..

    [golang] 채널 (Channel)

    고루틴 고루틴이 비동기여서, 메인이 먼져 종료가 되여 문제가 있습니다. 아래는 문제의 코드입니다. WaitGroup을 통해 대기하면 되겠지만, 그건 기다리게 할뿐 고루틴 사이에 흐름을 제어하지는 않습니다. package main import "fmt" func main() { var a, b = 10, 5 var result int go func() { result = a + b }() fmt.Printf("두 수의 합은 %d입니다.", result) } 채널 일단 고루틴이 접근할 수 있는 고루틴만의 공간을 채널이라고 생각해봤습니다. 채널은 값을 받을 때까지 대기하고 (main) 채널이 값을 받을 때 까지 고루틴도 대기 합니다. package main import "fmt" func main() { va..

    [golang] 고루틴(Gorountine)

    고루틴 고루틴. 지난번에 공부했는데 기억이 안나서 기록하면서 공부해보려 합니다. 고루틴은 여러함수를 병행(Concurrent)하게 실행할수 있는 논리적 가상 스레드 입니다. 비동기가 그것을 가능하게 해줍니다. package main import ( "fmt" "math/rand" "time" ) func hello(n int) { r := rand.Intn(3) time.Sleep(time.Duration(r) * time.Second) fmt.Println(n) } func main() { for i := 0; i < 100; i++ { go hello(i) // 고루틴 100개 생성 비동기 실행 } fmt.Scanln() } 위의 코드가 비동기가 아니면 얼마나 오래 걸릴지 생각을 해보면 됩니다. 메인..

    [golang] defer 무한루프

    defer 무한루프 defer에 대해 배웠는데, 예외처리 하는 곳에서 자꾸 무한루프가 발생했습니다. 결론부터 말하자면, 원인은 nil 처리를 안해서 그랬습니다. package main import "fmt" func test() { var num int fmt.Scanln(&num) defer func() { if r := recover(); r != nil { fmt.Println(r) //에러 메시지 출력 test() } }() if num

    [golang] 구름으로 배우는 고언어 기초

    한 눈에 끝내는 고랭기초 구름Edu에서 고랭배우고 있는데, 제가 자꾸 놓쳤던 부분을 메모해보려 합니다. 변수와 상수 이건 선언과 동시에 할당입니다. "선언"이 있다는 걸 까먹지 말아야겠습니다. name := "velbie" 콘솔 출력과 입력 보통 Println() 을 사용하고, 좀더 자세히 찍을때 서식출력이 가능한 Printf() 를 사용했습니다. 입력은 주로 Scanf를 사용했습니다. fmt.Println() fmt.Print() fmt.Printf() var age, birth int fmt.Scan(%age, &birth) var height int fmt.Scanf("%d\n", &height) fmt.Scanfln() %v 서식문자 이 문자를 봤을때 갸우뚱했습니다. 실수 출력할때 사용해야 겠습니..