Golang
-
[Go] The Go Programming Language #2-6: 패키지와 파일Golang 2021. 11. 30. 05:33
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 2.6 패키지와 파일 Go의 패키지는 다른 언어의 라이브러리나 모듈과 마찬가지로 모듈화, 캡슐화, 분할 컴파일 및 재사용 등을 지원함. 패키지의 소스코드는 하나 이상의 .go로 끝나는 파일 내에 있으며, 일반적으로 임포트 경로의 마지막 이름과 같은 디렉토리 안에 있음. 예를 들어, gopl.io/ch1/helloworld 패키지의 파일들은 $GOPATH/src/gopl.io/ch1/helloworld 디렉토리에 저장됨. 패키지는 패키지 외부에서 보이거나 익스포트되는 이름을 제어해 정보를 숨길 수 있게 함. Go에서는 식별자가 대문자로 시작하는지에 따라 익스포트 여부가 결정됨. 예제를 통해 알아보기 앞서 작성했..
-
[Go] The Go Programming Language #2-5: 타입 선언Golang 2021. 11. 30. 05:29
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 2.5 타입 선언 변수나 표현식에서의 타입 사용 변수나 표현식의 데이터 타입은 크기, 내부 표현 방식, 수행 가능한 고유 작업, 연관된 메소드와 같은 해당 값의 특성을 정의함. 모든 프로그램에는 동일하게 표현하지만, 매우 다른 개념을 가진 변수가 있음. int : 루프 인덱스, 타임스탬프, 파일 디스크립터, 한 달 등을 나타내는 데 사용할 수 있음. float64 : 미터 단위 초속이나 여러 단위 중 하나로 표현된 온도를 나타낼 수 있음. 문자열 : 암호나 색상의 이름을 나타낼 수 있음. 새로운 타입 선언 type 이름 내부-타입 type 선언은 기존 타입과 같은 내부 타입을 갖는 새 명명된 타입을 정의함. ..
-
[Go] The Go Programming Language #2-4: 할당Golang 2021. 11. 30. 05:20
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 2.4 할당 기본 할당 변수 내의 값은 할당문에 의해 갱신되며, 할당문의 제일 단순한 형태는 = 기호의 왼쪽에 변수가 있고 오른쪽에 표현식이 있는 형태임. x = 1 // 명명된 변수 *p = true // 간접 변수 person.name = "bob" // 구조체 필드 count[x] = count[x] * scale // 배열이나 슬라이스 또는 맵 원소 튜플 할당 여러 변수를 한 번에 할당할 수 있는 형태 i, j, k = 2, 3, 5 오른쪽의 모든 표현식은 변수가 갱신되기 전에 평가돼 특정 변수가 공교롭게 할당의 양쪽에 모두 나오는 경우에 유용함. 두 변수의 값을 서로 바꿀 때 x, y = y, x a..
-
[Go] The Go Programming Language #2-3: 변수Golang 2021. 11. 30. 05:14
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 2.3 변수 Go 에는 초기화되지 않은 변수가 없다. 이로 인해 코드가 단순해지며, 별도의 추가 작업 없이 경계 조건에 맞게 동작한다. 변수 선언 및 초기화 var 이름 타입 = 표현식 var 선언은 특정 타입의 변수를 만들고 이름을 붙인 뒤 초기 값을 설정함. '타입'이나 '= 표현식' 부분 중 하나는 생략이 가능하지만, 둘 다 생략은 불가능함. 타입을 생략하면 표현식에 의해 타입이 결정됨. 표현식을 생략하면 초기 값이 해당 타입의 제로 값이 됨. 타입별 제로 값 값 방식은 변수가 항상 타입에 맞는 값을 갖게 보장함. 한 선언문으로 여러 변수를 선언하고, 선택적으로 그에 대응하는 표현식 목록으로 초기화할 수..
-
[Go] The Go Programming Language #2-2: 선언Golang 2021. 11. 30. 05:00
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 2.2 선언 프로그램 개체와 개체의 일부 또는 모든 속성에 이름을 붙이는 것 선언에는 주로 var, const, type, func 의 네 가지 종류가 있음. Go 프로그램은 이름이 .go 로 끝나는 하나 이상의 파일에 저장되며, 각 파일은 파일이 어느 패키지에 속하는지 알리는 package 선언으로 시작함. ⇒ package 선언 다음에는 import 선언이 올 수 있으며, 그 후에 타입, 변수, 상수, 함수 등의 패키지 수준 선언이 임의의 순서대로 따라옴. 상수와 변수, 함수 선언 package main import "fmt" const boilingF = 212.0 func main() { var f =..
-
[Go] The Go Programming Language #2-1: 이름Golang 2021. 11. 30. 04:58
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 2.1 이름 이름 짓기 규칙 이름이란? Go 의 함수, 변수, 상수, 타입, 구문 라벨, 패키지 등을 일컫음. 문자(유니코드에서 문자로 간주하는 것 모두)나 밑줄로 시작하며, 그 뒤에 부가적으로 문자, 숫자, 밑줄을 쓸 수 있음. 대소문자 구별함. 문법상 허용된 키워드는 이름으로 사용할 수 없음. 모든 키워드 보기 이미 정의된 내장 상수, 타입, 함수의 이름들은 예약어가 아니므로 선언에서 사용할 수 있음. 단, 주의해서 사용해야 함. 모든 상수 보기 모든 타입 보기 모든 함수 보기 이름이 함수 안에 선언된 경우 이 이름은 함수 내로 국한됨. 함수 밖에서 선언하면 이름이 속하는 패키지의 모든 파일에서 볼 수 있..
-
[Go] The Go Programming Language #1-8: 미진한 부분Golang 2021. 11. 30. 04:57
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 1.8 미진한 부분 제어 흐름 switch 문 switch는 for와 if문에서처럼 부가적으로 짧은 변수 선언, 증가 또는 할당 구문, 함수 호출 등의 간단한 구문을 비롯해 테스트 전에 값을 설정할 수 있음. 간단한 예제로 알아보자! switch coinflip() { case "heads": heads++ case "tails": tails++ default: fmt.Println("landed on edge!") } coinflip 호출의 결과는 각각의 케이스 값과 비교됨. 케이스는 위에서 아래로 평가되기 때문에 처음으로 일치하는 것이 실행됨. 선택적인 기본 (default) 케이스는 다른 케이스 중 어느..
-
[Go] The Go Programming Language #1-7: 웹 서버Golang 2021. 11. 30. 04:52
이 시리즈는 "The Go Programming Language" 책을 바탕으로 작성되었습니다. 1.7 웹 서버 예제를 통해 알아보기 서버에 접근하는 데 사용된 URL의 경로를 반환하는 최소한의 서버 보여주기 요청이 http://localhost:8000/hello 라면 응답은 URL.Path = "/hello" 가 될 것임. package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", handler) // 각 요청은 핸들러를 호출함. log.Fatal(http.ListenAndServe("localhost:8000", nil)) } // handler는 요청된 URL r의 Path 구성 요소를 반환함. func han..