언어/Golang
-
[Golang] 에러언어/Golang 2020. 2. 23. 20:12
Go는 내장 타입으로 error 라는 인터페이스 타입을 갖습니다. error 인터페이스는 Error() 라는 하나의 메서드만 갖습니다. 이 개발자는 이 인터페이스를 상속받아서 커스텀 에러 타입을 구현할 수 있습니다.package main import ( "log" "os" ) type error interface { Error() string } func main() { f, err := os.Open("C:\\temp\\1.txt") if err != nil { println("에러다") log.Fatal(err.Error()) } println(f.Name()) } 또한 에러의 타입별로 switch 문을 사용하여 구별할 수 있습니다.package main import ( "log" "os" ) fun..
-
[Golang] package 관리, 선언하기언어/Golang 2020. 2. 16. 20:57
main package패키지 이름에 main이라고 되어 있으면 Go 컴파일러가 이를 실행 프로그램으로 인식합니다. 또한 main 패키지 안의 main() 함수를 시작하고자 하므로 라이브러리를 만들 때, main 패키지나 함수명을 사용하면 안됩니다.package import패키지를 import하는 방법은 아래와 같이 2가지가 있습니다.package main // 단일 패키지 선언 import "bytes" // 복수 패키지 선언 import ( "bytes" "encoding/json" "encoding/xml" "io/ioutil" "net/http" )package scope패키지 내에는 함수, 구조체, 인터페이스, 메소드 등이 있는데, 이러한 이름의 첫 문자를 대문자로 시작하면 public으로 간주되..
-
[Golang] http 모듈 사용하기언어/Golang 2020. 2. 16. 20:29
Go에서 제공하는 http 모듈을 사용하면 보다 쉽게 데이터를 전송하고 가져올 수 있습니다.GET Method 사용하기http.Get 메소드를 사용하면 쉽게 요청을 보낼 수 있지만 헤더나 스트림을 추가할 수 없습니다. 따라서 NewRequest 객체를 직접 생성하고 http.Client 객체를 통해 호출해야 합니다.package main import ( "fmt" "io/ioutil" "net/http" ) func simpleGet() { // header나 추가적인 요청을 보낼 수 없음 resp, err := http.Get("https://naver.com") if err != nil { panic(err) } defer resp.Body.Close() // 결과 출력 data, err := iou..
-
[Golang] map언어/Golang 2020. 2. 9. 18:54
map은 key:value로 이루어져 key에 대응하는 value를 찾는 해시 테이블을 구현한 자료구조입니다. 선언하는 방법은 아래와 같습니다.package main func main() { var a map[int]string // nil값을 가지므로 (Nil Map) 어떤 값도 선언할 수 없음. make()를 사용해 map을 초기화 해줘야 사용 가능 a = make(map[int]string) a[1] = "test" //{} 내부에 값을 바로 선언 가능 b := map[int]string { 1: "test", } c := make(map[int]string) c[1] = "test" println(a[1]) println(b[1]) println(c[1]) } 아래는 map 타입의 변수에 값 체크..
-
[Golang] 배열 (array) & 슬라이스 (slice)언어/Golang 2020. 2. 9. 18:39
배열 (array)Go에서 배열의 배열크기는 Type을 구성하는 한 요소입니다. 즉, [3]int와 [5]int는 서로 다른 타입으로 인식됩니다. 배열의 선언 및 초기화는 아래와 같습니다.package main func main() { var a [3]int a[0] = 1 a[1] = 2 a[2] = 3 var b = [3]int{1,2,3} var c = [...]int{1,2,3} var d = [...]int{1,2} println(a[0]) println(b[0]) println(c[0]) println(d[0]) var aa = [2][3]int{ {1, 2, 3}, {4, 5, 6}, } println(aa[0][0]) }슬라이스 (Slice)Go 배열은 크기를 동적으로 증가시키거나 배열을 ..
-
[Golang] 함수 (function)언어/Golang 2020. 2. 9. 18:10
call by value일 땐 상관없지만 주소값을 넘길 땐 받는 함수의 파라미터 타입을 정의할 때 조심해야 합니다.package main func main() { msg := "Hello" say(&msg) println(msg) //변경된 메시지 출력 } func say(msg *string) { println(*msg) *msg = "Changed" //메시지 변경 } 함수의 파라미터 값을 가변적으로 받고 싶을 때 아래와 같이 ...을 사용합니다. (파이썬에서 *args 와 동일한 기능)package main func main() { say("One", "Two", "Three", "Four") say("Five") } func say(msg ...string) { for _, s := range m..
-
[GO] 데이터 타입 & 연산자언어/Golang 2020. 2. 9. 18:04
데이터 타입타입은 컴파일러 언어나 데이터베이스에서 늘상 보는 것과 동일합니다. 다만 아래는 사용할 때 잘 알고 사용하는 것이 좋습니다.문자열 타입 string: 한번 생성되면 수정될 수 없는 Immutable 타입byte: uint8과 동일하며 바이트 코드에 사용rune: int32과 동일하며 유니코드 코드포인트에 사용문자열문자열은 quote나 back quote로 표현할 수 있습니다. quote는 한 줄로만 표현이 가능하며 \n과 같은 escape 문자열을 인식하고 back quote는 여러 줄로 표현이 가능하지만 \n과 같은 escape 문자열을 텍스트로만 인식합니다. 여러 줄로 표현할 때, 엔터를 치면 해당 값은 다음 줄로 인식이 가능합니다.package main import "fmt" func m..
-
[Golang] 조건문 (if) & Switch문언어/Golang 2020. 2. 9. 16:48
조건문 (if)파이썬과 동일하게 () 괄호를 사용하지 않아도 되고 조건문의 조건은 반드시 boolean 타입으로 나와야 합니다. Golang에서는 다른 언어와는 다르게 조건문의 코드 스타일을 강력하게 잡고 있습니다. if문 이후 else if 나 else의 시작은 다음 줄에서 시작할 수 없으며 if문이 끝나는 동일한 라인에서 선언해야 합니다.또한 조건문에 값을 선언하여 조건문 범위 내에서만 사용할 수 있습니다.package main import "fmt" func main() { str := "123" var i int = 100 var max int = 1000 if str == "12" { fmt.Println("12") } else if str == "23" { fmt.Println("23") } ..
-
[Golang] 변수언어/Golang 2020. 2. 9. 16:37
Golang에서 변수를 선언하는 방법은 아래와 같습니다.1. 변수 선언 후, 값 지정하기var test int test = 102. 변수 선언과 동시에 값 지정하기var test int = 103. 타입없이 변수 선언하기var test = 100 var test1 = "100" 컴파일에서 선언된 값의 타입을 확인한 다음, 내부적으로 타입을 지정해 주는 스타일입니다.4. 동적 변수 선언하기test := "vary" 3번과 유사하지만 변수라는 형태인 var 없이 선언하는 스타일입니다. 하지만 이러한 표현은 함수내에서만 사용할 수 있으며, 함수 밖에서는 var를 사용해야 합니다.5. 동일 타입을 가지는 복수개의 변수 선언하기var i, j int i = 10 j = 20 var i, j int = 0, 0 i..
-
[Golang] BeautifulSoup 사용하기 (goquery 사용하기)언어/Golang 2019. 1. 19. 16:24
Python에는 beautifulsoup 패키지가 존재해 Go에서도 없을까 찾아보던 도중 유사한 패키지를 찾았습니다. 해당 패키지를 사용하여 웹 크롤러를 만들거나 html에서 필요한 정보를 검색할 때, 편리하게 코딩할 수 있습니다.설치$ go get github.com/PuerkitoBio/goquery사용법아래는 현재 최신버전인 1.5 버전으로 설명합니다. 1.4이하 버전에서는 NewDocument()가 존재했지만 1.4버전에서 더이상 사용하지 않으므로 언급하지 않습니다.package main import ( "fmt" "log" "net/http" "github.com/PuerkitoBio/goquery" ) func ExampleScrape() { // Request the HTML page. re..