일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- golang array
- 타입
- array
- slice
- struct
- 패스트캠퍼스업스테이지부트캠프
- 스코프
- golang slice remove
- package
- 함수
- 상수
- method
- golang pointer
- UpstageAILab
- receiver
- Pointer
- golang slice
- 국비지원
- scope
- golang interface
- 패스트캠퍼스업스테이지에이아이랩
- 메서드
- receiver method
- keyword
- 변수
- golang
- 패스트캠퍼스
- 업스테이지패스트캠퍼스
- 패스트캠퍼스AI부트캠프
- Interface
- Today
- Total
목록2024/08 (9)
느리지만 꾸준히, 코딩
개요Go 언어는 간결하고 효율적인 설계를 중시하며, 객체 지향 프로그래밍 패러다임을 직접적으로 지원하지 않습니다. 그러나 캡슐화(encapsulation)와 임베딩(embedding) 같은 개념을 통해 객체 지향 프로그래밍의 핵심 개념들을 구현할 수 있습니다. 1. 캡슐화 (Encapsulation)캡슐화는 객체의 데이터를 외부로부터 숨기고, 그 데이터에 접근하거나 조작하는 방법을 제공하는 개념입니다. Go에서는 캡슐화를 구조체와 메서드를 통해 구현할 수 있습니다.1.1 접근 제어Golang에서는 대소문자를 사용하여 접근 제어를 수행합니다:대문자로 시작하는 필드나 메서드: 외부에서 접근 가능 (public)소문자로 시작하는 필드나 메서드: 같은 패키지 내에서만 접근 가능 (private)1.2 구조체 (..
개요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}.....
개요Go는 예외(exception) 대신 에러(error)를 사용하여 예외처리를 합니다.예외처리시 사용하는 error 인터페이스에 대해 알아보겠습니다.Error 인터페이스 정의Golang의 error 인터페이스는 간단한 구조입니다.type error interface { Error() string}단 하나의 메서드만을 가지고 있습니다.`Error()` 메서드는 에러 설명을 문자열로 반환합니다.Error 인터페이스 사용하기에러 반환하기함수에서 에러를 반환할 때는 보통 마지막 반환 값으로 error 타입을 사용합니다.func doSomething() (int, error) { // 작업 수행 if 문제발생 { return 0, errors.New("문제가 발생했습니다") ..
개요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..

개요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: 포..

개요Go 언어에서 문자열(string)과 룬(rune)은 텍스트를 다룰때 주의할점과 특징들에 대해서 알아보겠습니다.string(문자열)Go에서 string은 불변(immutable)의 바이트 슬라이스입니다. 기본적으로 UTF-8로 인코딩된 텍스트를 나타내는 데 사용됩니다. 특징읽기 전용: 한 번 생성된 문자열은 변경할 수 없습니다.UTF-8 인코딩: 기본적으로 UTF-8을 사용합니다.인덱싱: 개별 바이트에 접근할 수 있지만, 항상 유효한 유니코드 문자를 반환하지는 않습니다.예제s := "Hello, 월드"fmt.Println(len(s)) // 13 (바이트 수)fmt.Println(s[0]) // 72 (ASCII 값 'H') rune(룬)rune은 Go에서 유니코드 코드 포인트를 나타내는 타입입니..
개요동일성(Identity), 동등성(Equality) 두 개념의 차이점과 Go언어에서의 적용 방법에 대해 알아보겠습니다.Identity (동일성)정의Identity는 두 변수가 메모리 상에서 정확히 같은 객체를 가리키고 있는지를 나타냅니다.특징주로 포인터 비교에 사용`==` 연산자로 비교메모리 주소를 비교예시type Person struct { Name string Age int}p1 := &Person{"Alice", 30}p2 := &Person{"Alice", 30}p3 := p1fmt.Println(p1 == p2) // false (다른 메모리 주소)fmt.Println(p1 == p3) // true (같은 메모리 주소) Equality (동등성)정의Equality는 두 값의 내..
개요Go 언어를 사용하다 보면 함수에 값을 전달할지, 아니면 포인터를 전달할지 고민하게 되는 상황이 자주 발생합니다.Go에서 값 전달과 포인터 전달의 차이점을 이해하고, 각각의 장단점을 비교하여 어떤 경우에 무엇을 선택해야 하는지 알아보겠습니다. 값 전달 (Pass by Value)값 전달은 함수에 인수를 전달할 때 그 값을 복사하여 전달하는 방식입니다. 이 경우 함수 내에서 인수의 값을 변경해도 원본 값에는 영향을 미치지 않습니다. 장점안전성: 값이 복사되므로 함수 내에서 값이 변경되더라도 원본 데이터가 보호됩니다.단순성: 포인터를 사용하지 않으므로 코드가 단순하고 직관적입니다.단점성능 문제: 큰 구조체나 배열을 복사할 때 메모리 사용량이 증가하고 성능이 저하될 수 있습니다.변경 불가: 함수 내에서 값..

개요Go maps in action 의 내용을 참고해서, Golang map기본 개념에 대해서 알아보겠습니다.1. 기본 구조와 선언1.1 map(맵)의 기본 구조map[타입]값map[KeyType]ValueType타입: 비교 가능한 모든 타입이 올 수 있습니다.값: 어떤 타입이든 올 수 있으며, 다른 맵도 포함될 수 있습니다.1.2 map(맵) 변수 선언문자열 키와 정수 값을 가지는 맵 변수를 선언하고 싶다면, 다음과 같이 표현 할 수 있습니다. var m map[string]int1.3 map(맵)의 특성map(맵)은 포인터나 슬라이스와 같은 참조 타입입니다.위와 같이 선언만 한 맵 m의 값은 nil입니다.nil 맵은 읽을 때는 빈 맵처럼 동작하지만, 쓰기를 시도하면 런타임 패닉이 발생합니다.1.4 m..