본문 바로가기

프로그래밍/Golang28

Golang Date(날짜, 시간) 계산, 포맷팅 Golang에서 날짜와 시간 처리Golang `time` 패키지를 사용하여 날짜와 시간을 처리하는 방법들을 알아보겠습니다.1. 날짜와 시간 생성// 현재 시간now := time.Now()// 사용자 지정 시간 (UTC 사용)customTime := time.Date(2023, 7, 26, 15, 30, 0, 0, time.UTC) 2. 날짜 계산// 24시간 후futureTime := now.Add(24 * time.Hour)// 1달 전pastTime := now.AddDate(0, -1, 0)3. 날짜 포맷팅Go의 시간 포맷팅은 2006년 1월 2일 오후 3시 4분 5초(15:04:05)를 레이아웃으로 사용합니다.// YYYY-MM-DD HH:MM:SSformatted := now.Format("2.. 2024. 9. 10.
Golang 캡슐화, 임베딩 개요Go 언어는 간결하고 효율적인 설계를 중시하며, 객체 지향 프로그래밍 패러다임을 직접적으로 지원하지 않습니다. 그러나 캡슐화(encapsulation)와 임베딩(embedding) 같은 개념을 통해 객체 지향 프로그래밍의 핵심 개념들을 구현할 수 있습니다. 1. 캡슐화 (Encapsulation)캡슐화는 객체의 데이터를 외부로부터 숨기고, 그 데이터에 접근하거나 조작하는 방법을 제공하는 개념입니다. Go에서는 캡슐화를 구조체와 메서드를 통해 구현할 수 있습니다.1.1 접근 제어Golang에서는 대소문자를 사용하여 접근 제어를 수행합니다:대문자로 시작하는 필드나 메서드: 외부에서 접근 가능 (public)소문자로 시작하는 필드나 메서드: 같은 패키지 내에서만 접근 가능 (private)1.2 구조체 (.. 2024. 8. 9.
Golang 함수 []any(슬라이스 파라미터) 와 ...any(가변인자) 개요Go 언어에서 함수를 정의할 때 []any와 ...any는 모두 여러 개의 값을 받을 수 있는 파라미터를 나타내지만, 사용 방법과 의미에 차이가 있습니다. 두 방식의 차이점을 자세히 살펴보겠습니다.[]any[]any는 'any' 타입의 슬라이스를 나타냅니다. 정의: func someFunc(params []any) { ... }호출: someFunc([]any{1, "hello", true})특징: 함수에 전달할 때 반드시 슬라이스로 만들어서 전달해야 합니다....any...any는 가변 인자를 나타냅니다. 정의: func someFunc(params ...any) { ... }호출: someFunc(1, "hello", true) 또는 someFunc([]any{1, "hello", true}..... 2024. 8. 8.
Golang Error 인터페이스 개요Go는 예외(exception) 대신 에러(error)를 사용하여 예외처리를 합니다.예외처리시 사용하는 error 인터페이스에 대해 알아보겠습니다.Error 인터페이스 정의Golang의 error 인터페이스는 간단한 구조입니다.type error interface { Error() string}단 하나의 메서드만을 가지고 있습니다.`Error()` 메서드는 에러 설명을 문자열로 반환합니다.Error 인터페이스 사용하기에러 반환하기함수에서 에러를 반환할 때는 보통 마지막 반환 값으로 error 타입을 사용합니다.func doSomething() (int, error) { // 작업 수행 if 문제발생 { return 0, errors.New("문제가 발생했습니다") .. 2024. 8. 7.
Golang에서 문자열 자르기 개요Golang에서 다양한 문자열 자르기(string slice) 방법을 살펴보겠습니다.기본적인 문자열 슬라이싱Go에서 문자열은 불변(immutable) 바이트의 슬라이스입니다. 따라서 배열이나 슬라이스와 유사한 방식으로 인덱싱할 수 있습니다.str := "Hello, World!"fmt.Println(str[0:5]) // "Hello"fmt.Println(str[:5]) // "Hello"fmt.Println(str[7:]) // "World!"fmt.Println(str[:]) // "Hello, World!"주의: 이 방법은 바이트 단위로 작동하므로 UTF-8 인코딩된 문자열에서 멀티바이트 문자를 다룰 때는 주의가 필요합니다.strings.Split() 함수 사용import "str.. 2024. 8. 7.
Golang 정수 타입과 아키텍처 의존성 개요Go 언어에서 정수 타입은 크게 두 가지 범주로 나눌 수 있어요.아키텍처 독립적 타입 (Architecture-independent types)아키텍처 의존적 타입 (Architecture-dependent types)해당 부분에 대해서 알아보겠습니다. 1. 아키텍처 독립적 타입이 타입들은 CPU 아키텍처와 관계없이 항상 동일한 크기를 가집니다:int8, uint8 (별칭: byte): 항상 1바이트int16, uint16: 항상 2바이트int32 (별칭: rune), uint32: 항상 4바이트int64, uint64: 항상 8바이트2. 아키텍처 의존적 타입이 타입들은 CPU 아키텍처에 따라 크기가 달라집니다:int, uint:32비트 시스템에서 4바이트64비트 시스템에서 8바이트uintptr: 포.. 2024. 8. 6.