서론
노마드 코더에서 무료인 쉽고 빠른 Go 시작하기 강의 내용을 코딩하며 정리하였습니다.
시작
https://go.dev/ 페이지에서 Go를 다운로드 합니다. 다운로드 완료 시 설치파일을 실행하여 설치합니다. 그리고 폴더를 다음과 같이 생성합니다.
- mkdir github.com/hgko1207
- cd github.com/hgko1207
- mkdir learngo
- cd learngo
- go mod init github.com/hgko1207/learngo
코딩
- main.go 는 컴파일을 위한 파일
- export 함수를 만들 경우 함수명 맨 앞에 대문자로 작성
- function -> func
- null -> nil
상수와 변수
1 2
| const name string = "eden"
|
1 2 3 4 5 6 7 8
| func main() { var name string = "eden"
name := "eden" }
|
For 문
1 2 3 4
| people := [2]string{"eden", "haeun"} for _, person := range people { fmt.Println(person); }
|
함수
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| func lenAndUpper(name string) (length int, uppercase string) { defer fmt.Println("I'm done")
length = len(name) uppercase = strings.ToUpper(name) return }
func (a Account) String() string { return fmt.Sprint(a.Owner(), "'s account.\nHas: ", a.Balance()) }
|
배열 선언
1 2 3
| func main() { data := [2]string{"test1", "test2"} }
|
Map 사용
1 2 3 4 5 6 7 8
|
var results = map[string]string{}
var results = make(map[string]string)
results["hello"] = "Hello"
|
Goroutines
- Goroutines 이란 기본적으로 다른 함수와 동시에 실행시키는 함수입니다.
- Goroutines는 프로그램이 작동하는 동안(메인함수가 실행하는 동안)만 유효합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| func main() { go count() count() }
func count() { for i := 0; i < 10; i++ { fmt.Println(i) time.Sleep(time.Second) } }
func main() { go count() go count() }
|
Channels
- Channel 은 Goroutines 이랑 메인함수 사이에 정보를 전달하기 위한 방법입니다.
- 채널로부터 뭔가를 받을 때 메인 함수가 어떤 결과가 올 때까지 기다립니다.
- 채널의 타입은 chan 입니다.
- 채널은 데이터를 받을 순 없고 보낼 수만 있도록 작성할 수 있습니다.(send-only)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| func main() { c := make(chan bool) go channelTest(c) result := <- c fmt.Println(result) }
func channelTest(c chan bool) { time.Sleep(time.Second * 5) c <- true }
func sendOnlyTest(c chan<- bool) { c <- true }
|
Error
errors.New()
를 사용하여 에러를 정의하고 호출합니다.
1 2 3 4 5 6 7 8 9
| var err = errors.New("error content")
func main() { fmt.PrintLn(errTest()) }
func errTest() error { return err }
|
goquery
HTML을 navigate하고 필요한 걸 HTML에서 찾아내기 위해서 사용 JQuery와 유사한 go를 위한 라이브러리입니다.
1
| $ go get github.com/PuerkitoBio/goquery
|
참고