24. 제네릭 프로그래밍
✅ 1. 제네릭 프로그래밍 소개 Go 1.18 버전에 추가된 기능으로, 타입 파라미터를 통해서 하나의 함수나 타입이 여러 타입에 대응해 동작하도록 하는 프로그래밍 기법 ✅ 2. 제네릭 함수 func funcName[T constraint](p T) {} 함수명 뒤에 대괄호를 열고 타입 파라미터(파라미터 이름과 타입 제한)를 적는다 ...
✅ 1. 제네릭 프로그래밍 소개 Go 1.18 버전에 추가된 기능으로, 타입 파라미터를 통해서 하나의 함수나 타입이 여러 타입에 대응해 동작하도록 하는 프로그래밍 기법 ✅ 2. 제네릭 함수 func funcName[T constraint](p T) {} 함수명 뒤에 대괄호를 열고 타입 파라미터(파라미터 이름과 타입 제한)를 적는다 ...
✅ 1. 채널 사용하기 채널(channel)이란 고루틴끼리 메시지를 전달할 수 있는 메시지 큐이다. 메시지 큐에 메시지들이 차례대로 쌓이고 메시지를 읽을 때는 들어온 순서대로 읽게 된다 1.1 채널 인스턴스 생성 var messages chan string = make(chan string) 채널은 make() 함수로 생성한다 채널...
✅ 1. 스레드 프로세스 안의 작업 단위 CPU 코어가 스레드를 빠르게 전환하며 수행하면 사용자 입장에서는 마치 동시에 수행하는 것처럼 보인다 1.1 컨텍스트 스위칭 비용 CPU 코어가 여러 스레드를 전환하며 수행하는 것을 컨텍스트 스위칭(context switching)이라고 한다 스레드의 명령 포인터가 현재 스레드의 상태를 저...
✅ 1. 자주 쓰는 명령어 1.1 remote # 1. 로컬 저장소 설정(.git/config)에 저장된 remote repo 목록을 확인 git remote -v # 2. 로컬 저장소 설정에 remote repo 정보를 기록 git remtoe add namseok git@github.com:namseok-kim/test-api.git # 3....
✅ 1. 에러 반환 에러를 처리하는 가장 기본 방식은 에러를 반환하고 알맞게 처리하는 방식이다 if err != nil { fmt.Println("파일 생성에 실패했습니다.", err) return } 1.1 사용자 에러 반환 package main import ( "fmt" "math" ) func Sqr...
✅ 1. 리스트 type Element struct { next, prev *Element // The list to which this element belongs. list *List // The value stored with this element. Value any } 리스트는 각 데이터를 담고 있는 Element들을 포인터로...
✅ 1. 가변 인수 함수 package main import "fmt" func sum(nums ...int) int { fmt.Printf("nums Type: %T\t", nums) sum := 0 for _, v := range nums { sum += v } return sum } func main() { fmt.Prin...
💡 인터페이스를 어떤 구체 타입으로 변경하는 것은 Type Assertion이라고 한다! (Type Conversion, 타입 변환과는 다르다) ✅ 0. 추가 내용 아래 내용에서 나오는 타입 변환은 Type Assertion이다. Type Conversion(타입 변환)과는 다른 개념이므로 혼용하면 안된다 !!! 1.1 Type asser...
✅ 1. 메서드 선언 package main import "fmt" type account struct { balance int } func (a *account) withdraw(amount int) { a.balance -= amount } func main() { a := &account{100} a.withdraw(20)...
✅ 1. 슬라이스 1.1 선언 var slice []int slice[1] = 30// panic: runtime error: index out of range [1] with length 0 슬라이스를 초기화하지 않으면 길이가 0인 슬라이스가 생성된다 길이를 초과하는 인덱스 접근은 런타임 에러가 발생한다 1.2 초기화 // 1. ...