본문 바로가기

(5)
[기초] Go 기초 정리 - 5 (Interface) Tour of Go를 기반으로한 Go의 기본 내용입니다. Interface Interface는 메소드의 시그니쳐 집합으로 정의된다. 인터페이스 유형의 값은 해당 인터페이스의 메소드를 모두 구현하는 타입이라면 어떤 유형이든 가질 수 있음. package main import ( "fmt" "math" ) type Abser interface { Abs() float64 } func main() { var a Abser f := MyFloat(-math.Sqrt2) v := Vertex{3, 4} a = f // a MyFloat implements Abser a = &v // a *Vertex implements Abser // In the following line, v is a Vertex (not *..
구조체를 포함하는 구조체 구조체는 구조체의 필드로 다른 구조체를 포함하는 방법이 있다. type User struct { Name string ID string Age int } type VIPUser struct { UserInfo User //구조체를 포함하는 구조체 필드 VIPLevel int Price int } User는 일반 고객의 정보를 나타내고, VIPUser는 일반고객의 정보에 VIPLevel과 Price정보까지 포함한다. 따라서 위 struct와 같이 "다른 구조체를 포함하는 구조체"형태로 작성될 수 있다. 이와 같이 작성하게 되면 VIPUser에 별도로 Name, ID, Age 필드를 작성할 필요없이 UserInfo를 이용하면 된다. package main import "fmt" type User struct..
[기초] Go 기초 정리 - 3 (Pointer, Struct, Array, Slice, Range, Map, Function value, Function Closure) Tour of Go를 기반으로한 Go의 기본 내용입니다. Pointers 포인터는 값의 메모리 주소를 가지고 있다. *T 타입은 T값을 가리키는 포인터이고 Zero value는 nil. var p *int //p는 int값을 가리키는 포인터 & 연산자는 해당 변수의 포인터(주소)를 생성. i := 42 //int 타입 변수 i p = &i //int 포인터 변수 p * 연산자는 포인터가 가리키는 주소의 값. C언어와는 다르게, Go에서는 포인터 산술을 지원하지 않음. fmt.Println(*p) // 포인터 p를 통해 i 읽기 *p = 21 // 포인터 p를 통해 i에 값을 assign Structs (구조체) 구조체는 필드의 집합체. package main import "fmt" //struct 이름 ..
[기초] Go 기초 정리 - 2 (For, If, Switch, Defer) Tour of Go를 기반으로한 Go의 기본 내용입니다. For Go는 for라는 단 하나의 반복 구조를 가짐. for 반복문은 ;로 구분되는 세 가지 구성 요소를 가짐 초기화 구문 : 첫 번째 iteration 전에 수행. 조건 표현 : 매 모든 iteration 이전에 판별. 사후 구문 : 매 iteration 마지막에 수행. 초기화 구문은 주로 :=를 이용한 변수 선언이고, for 스코프 내에서만 유효하다. 반복문은 조건 판별이 false일 경우, 종료될 것. C, Java, Javascript와 같은 언어들과 달리, Go는 for의 세가지 구성 요소를 감싸는 괄호는 없고, { }괄호가 항상 필수. package main import "fmt" func main() { sum := 0 for i :..
[기초] Go 기초 정리 - 1 (import, 함수, 변수, 상수, 자료형) Tour of Go를 기반으로한 Go의 기본 내용입니다. Import 한줄씩 써도되고, 하나로 묶을 수도 있다.(factored import) package main import ( "fmt" "math" ) func main() { fmt.Printf("Now you have %g problems.\n", math.Sqrt(7)) } 함수 param에서 변수 이름 뒤에 type이 온다. (Go 선언 Syntax 관련 번역) package main import "fmt" func add(x int, y int) int { return x + y } func main() { fmt.Println(add(42, 13)) } 두 개 이상의 연속된 이름이 주어진 함수 매개변수가 같은 type일 때. func a..