반응형
SMALL

Go 15

[Design Pattern] 싱글톤(Singleton), 빌더(Builder), 팩토리 메소드(Factory Method) 패턴

싱글톤(Singleton) 싱글톤(Singleton) 패턴은 기억하기 쉬운 패턴입니다. 이름에서도 나타내듯이 한 객체 대한 중복 없이 하나의 인스턴스를 제공하는 디자인 패턴입니다. 이는 인스턴스를 사용하기 위한 첫번째 호출에서 인스턴스를 생성하고 애플리케이션 내에서 재사용되는 것을 의미합니다. 이를 돕기 위해 간단하게 count를 증가시키는 코드를 살펴보겠습니다. package singleton type Singleton interface { AddOne() int } type singleton struct { count int } var instance *singleton func GetInstance() Singleton { if instance == nil { instance = new(single..

Go 2022.11.21

Go의 고루틴과 채널

고루틴 Go에서는 동시에 수행되는 작업을 고루틴이라고 한다. 프로그램이 시작된 뒤 유일한 고루틴은 main 함수를 호출하는 것이므로 이를 메인 고루틴이라고 한다. 새 고루틴은 go문에 의해 생성된다. 문법적으로 go문은 키워드 go가 앞에 붙는 일반 함수 또는 메소드 호출이다. func handleConn(c net.Conn) { input := bufio.NewScanner(c) for input.Scan() { go echo(c, input.Text(), 1*time.Second) } c.close() } 채널 고루틴이 Go 프로그램의 동작이라면 채널은 고루틴 간의 연결이다. 채널은 한 고루틴이 다른 고루틴으로 값을 보내기 위한 통신 메커니즘이다. 각 채널은 채널의 요소 타입이라는 특정 타입 값의 통..

Go 2022.01.10

Go의 메소드와 인터페이스

메소드 메소드 선언 메소드는 일반 함수 선언을 변형해 함수명 앞에 부가적인 파라미터를 추가한 형태로 선언한다. 파라미터는 함수를 파라미터 타입에 추가한다. package geometry import "math" type Point struct{ X, Y float64 } type Path []Point // function func Distance(p, q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y) } // method func (p Point) Distance(q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y) } func (path Path) Distance() float64 { sum := 0.0 fo..

Go 2022.01.07

Go의 복합 타입과 함수

배열 배열은 0개 이상의 특정 타입 원소로 이뤄진 고정 길이 시퀀스다. 배열의 개별 원소는 기존 첨자 표기법으로 접근하며, 첨자의 범위는 0부터 배열 길이-1까지다. 내장 함수 len은 배열의 원소 수를 반환한다. var a [3]int // 정수 3개로 이뤄진 배열 fmt.Println(a[0])// 첫 번째 원소 출력 fmt.Println(a[len(a)-1])// 마지막 원소 출력 // 인덱스와 원소 출력 for i, v := range a { fmt.Printf("%d %d\n", i, v) } // 원소만 출력 for _, v := range a { fmt.Printf("%d\n", v) } var q [3]int = [3]int{1, 2, 3} var r [3]int = [3]int{1, 2}..

Go 2021.12.16

Go 프로그램의 기본 구성 요소

이름 Go 프로그램에서 이름은 문자(유니코드에서 문자로 간주하는 것 모두)나 밑줄로 시작하고, 그 뒤에 임의의 개수의 부가적인 문자, 숫자, 밑줄을 쓸 수 있다. Go에는 문법상 허용된 키워드 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 기 정의된 내장 상수, 타입, 함수의 이름 true false iota nil int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex12..

Go 2021.12.13
반응형
LIST