프로그래밍 언어/Go

이번에는 지난번에 작성했던 URL 접속 코드를 조금 개선했다. 개선된 것은 url 에 GET 요청을 보냈을 때 응답 결과를 확인할 수 있도록 map 을 사용하도록 한 부분이다. 정의한 results 이름의 map 은 key, value 타입을 모두 string 으로 사용한다. map 을 정의할 때 주의할게 있는데, 마치 java 에서 선언만 하고 초기화 시켜주지 않으면 오류가 발생했던 것처럼 Go 에서도 empty 로 초기화 해주는 부분이 있어야 오류가 발생하지 않았다. // url 접속 결과를 담을 비어있는 map 선언 // 방법 1 results := map[string]string{} // 방법 2 var results = map[string]string{} // 방법 3 :: make 는 map ..
이번 시간부터 실행활에 적용할 수 있는 예제를 만들어 본다. 우선 임의의 URL 에 접속하는 예제를 만든다. part3 에 대한 폴더를 만들고 그 안에 main.go 를 다음과 같이 작성한다. package main import ( "errors" "fmt" "net/http" ) // 사용자 정의 error var errRequestFailed = errors.New("Request failed") func main() { // 접속을 시도 할 url 목록 urls := []string{ "https://www.airbnb.com/", "https://www.google.com/", "https://www.amazon.com/", "https://www.reddit.com/", "https://www...
이번에는 map 에 저장된 값을 수정하고 삭제하는 실습을 한다. 먼저 'part2_myDict_main.go' 파일을 먼저 작성하고, 'myDict.go' 파일을 작성하는 순서로 진행한다. 이건 마치 TDD 를 하는 느낌이다. package main import ( "fmt" "myDict" ) func main() { dictionary := myDict.Dictionary{} baseWord := "hello" // 값을 추가 dictionary.Add(baseWord, "First") // 저장된 값을 수정 err := dictionary.Update(baseWord, "Second") if err != nil { fmt.Println(err) } // 저장된 값을 조회 한 다음 출력 word, _..
이번에는 map 에 요소를 추가하는 실습을 한다. 앞서 작성한 myDict.go 파일에 다음 내용을 추가 한다. var errWordExists = errors.New("That word already exists") // Add a word to the dictionary func (d Dictionary) Add(word, def string) error { // [if style] _, err := d.Search(word) if err == errNotFound { d[word] = def } else if err == nil { return errWordExists } return nil // [switch style] /* _, err := d.Search(word) switch err { c..
이번 실습에서는 struct 를 사용하지 않고 'type' 이라는 것을 사용 한다. 그 전에 먼저 myDict 디렉토리를 만들고 그 안에 myDict.go 파일을 생성한다. 그리고 이 파일을 사용 할 main 이 될 파일을 'part2_myDict_main.go' 라는 이름으로 생성했다. (앞서 예제에서 사용했던 'main.go' 파일도 'part2_account_main.go' 로 이름을 수정했다.) 다음은 map 을 정의한 myDict.go 파일의 코드이다. package myDict import "errors" type Dictionary map[string]string var errNotFound = errors.New("Not Found") // Search for a word func (d D..
Go 에는 다른 언어와 유사하게 사용자가 실행하지 않아도 자동으로 실행해주는 메소드가 있다. 예를 들면 Python 에서 class 를 출력하면 class 의 __str__ 을 호출 한다거나 Java 에서 객체를 출력하면 toString() 을 호출 하는 것과 같다. 본격적으로 알아보기에 앞서 account struct 의 owner 값을 수정하고 가져올 수 있는 메소드를 만들었다. // ChangeOwner of the account func (a *account) ChangeOwner(newOwner string) { a.owner = newOwner } // Owner of the account func (a account) Owner() string { return a.owner } Go 에서 s..
지난번 Methods part One 에서 Deposit method 를 호출했을 때 account 값이 수정되지 않은 것을 확인했다. 그 이유는 Go 에서 function, method 를 사용할 때 object, struct 등에 대해 복사본을 사용하기 때문이다. 지금의 경우 Deposit 메소드의 receiver 에서 복사본이 사용 됐다. // Deposit + amount on your account func (a account) Deposit(amount int) { a.balance += amount } 여기서 사본을 사용하지 않고 원본을 사용하게 하기 위해서는 다음과 같이 * 연산자를 사용해야 한다. // Deposit + amount on your account func (a *accoun..
Go 에는 function 이외에 method 개념이 있다. 지금까지 알아낸 내용을 기준으로 method 는 struct 와 연관이 있다. 마치 java 에서 멤버 필드의 값을 조작하기 위해 method 를 추가 하는 것처럼, struct 의 값을 조작하기 위해 function 을 정의 하는데, 이 때 사용하는 function 을 method 라고 하는것 같다. 형태는 function 과 매우 유사하다. 이전에 작성했던 account.go 파일을 다음과 같이 수정하여 account struct 의 balance 값을 조작하는 method 를 정의 해보자. package accounts type account struct { owner string balance int } // NewAccount crea..
nimkoes
'프로그래밍 언어/Go' 카테고리의 글 목록 (2 Page)