본문 바로가기

Total

[Google Go 언어] 미니 프로젝트 : Scrapper + Web Step 1 기존 Scrapper 에서 Web을 이용하여 검색어를 입력해보자. 검색어에 맞춰 데이터를 수집하고, 파일을 다운로드 및 삭제해보자. `scrapper/scrapper.go` Windows 에서 읽기가 가능하도록 utf8bom 을 설정 추가 파일 삭제가 가능하도록 flush 추가 package scrapper import ( "encoding/csv" "fmt" "log" "net/http" "os" "strconv" "strings" "time" "github.com/PuerkitoBio/goquery" ) type extractedJob struct { id string title string location string salary string summary string } func Sc.. 더보기
[Google Go 언어] 미니 프로젝트 : Scrapper Step 1 각 페이지에서 상세 정보를 읽고 CSV로 저장하자 `totalPages := getPages()` 에서 페이지 링크를 취합 `go getPage(i, c)` 에서 각 페이지마다 스크랩 시작 위 함수 내부의 `go extractJob(card, c)`에서 상세정보 취합 `jobs = append(jobs, extractedJobs...)` 에서 취합된 상세 정보 병합 `writeJobs(jobs)` 에서 CSV로 파일 출력 package main import ( "encoding/csv" "fmt" "log" "net/http" "os" "strconv" "strings" "time" "github.com/PuerkitoBio/goquery" ) type extractedJob struct {.. 더보기
[Google Go 언어] 미니 프로젝트 : URL Checker Step 1 여러 개의 URL의 상태를 순차적으로 체크해보자 `main.go` package main import ( "errors" "fmt" "net/http" ) var errRequestFailed = errors.New("Request failed") func main() { var results = make(map[string]string) urls := []string{ "https://www.airbnb.com/", "https://www.google.com/", "https://www.amazon.com/", "https://www.reddit.com/", "https://www.google.com/", "https://soundcloud.com/", "https://www.faceboo.. 더보기
[Google Go 언어] 미니 프로젝트 : Dictionary Step 1 Struct 를 이용하여 내부 func를 활용한 func 를 만들어보자 단어를 추가하고 에러 처리를 해보자 `mydict.go` package mydict import "errors" // Dictionary type type Dictionary map[string]string var errNotFound = errors.New("Not Found") var errWordExists = errors.New("That word already exists") // Seaerch for a word func (d Dictionary) Search(word string) (string, error) { value, exists := d[word] // exists 는 true/false if exi.. 더보기
[Google Go 언어] 미니 프로젝트 : Banking Step 1 Account 를 생성하는 모듈을 만들고, Main 에서 호출해보자. Account 의 경우 func 를 이용하여 생성하자 `accounts.go` package accounts // Account Struct type Account struct { owner string balance int } // NewAccount creates Account func NewAccount(owner string) *Account { account := Account{owner: owner, balance: 0} return &account } `main.go` package main import ( "fmt" "kjham/learngo_banking/accounts" ) func main() { acc.. 더보기
[Google Go 언어] 기본 문법 func // 배열 인자 받는 법 func receiveStringArray(word ...string) { } // 인자 타입 생략 func summaryParamType(a, b int) int { return a * b } // defer 사용과 다중 데이터 반환 func deferFunction(name stirng) (int, string) { defer fmt.Println("After call") return len(name), strings.ToUpper(name) } for func superAdd(numbers ...int) int { total := 0 for _, number := range numbers { total += number } for i := 0; i < len(num.. 더보기
[Google Go 언어] Resultful API (Gin Web Framework) Gin Web Framework 를 이용하여 Restful API 구현 album 객체를 생성하고, 이 객체에 데이터를 추가하거나 조회하는 API 구현 package main import ( "net/http" "github.com/gin-gonic/gin" ) // 데이터 객체 type album struct { ID string `json:"id"` Title string `json:"title"` Artist string `json:"artist"` Price float64 `json:"price"` } // 데이터 var albums = []album{ {ID: "1", Title: "Blue Train", Artist: "John Coltrane", Price: 56.99}, {ID: "2", .. 더보기
[Google Go 언어] 모듈 생성 및 Build, Install External Package Import 패키지는 다음 주소에서 검색 `https://pkg.go.dev/` hello.go 의 코드 다음과 같이 수정 package main import "fmt" func main() { fmt.Println("Hello, World!") } `go mod tidy` 명령어로 package 설치 프로젝트 Root 경로에 `go.sum` 파일이 추가됨 `go run .` 으로 실행 `Don't communicate by sharing memory, share memory by communicating.` 출력 확인 Create Module And Import greetings 패키지 생성 및 코드 작성 이름이 주어지지 않을 경우 Error 정보를 전달 package g.. 더보기