2024/12 6

Golang (Go언어) 제네릭 프로그래밍(Generic Programming) 1/3

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 제네릭 프로그래밍(Generic Programming)- Go 1.18 버전에 추가된 기능으로 타입 파라미터를 통해 하나의 함수나 타입이 여러 타입에 대응해 동작하도록 하는 기법- 자바, C#, C++ 같은 언어에서는 이미 제공되던 기능임. package mainimport "fmt"func min(a, b int) int { if a  → a,b는 출력이 가능하나 c,d는 아래 결과로 보면 int16 타입을 int로 변환할 수 없어서 사용할 수 없다고 나옴.- min은 int 타입인데, c,d는 int16 타입으로 서로 타입이 다르며, Go는 이를 변환시켜주지 않음(최강 타입 언어).   = 변환하고 싶다면 Println부분에서 i..

Language/Golang 2024.12.27

Golang (Go언어) 채널과 컨텍스트(Channel & Context)

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 채널(Channel)- 고루틴끼리 메시지를 전달할 수 있는 메시지 큐(FIFO).- Thread Safe Queue라고도 하며, 멀티스레드 환경에서 Lcok 없이 사용할 수 있음.- 메시지 큐에 메시지들은 차례대로 쌓이게 되고 메시지를 읽을 때 맨 처음 온 메시지부터 차례대로 읽게됨. * 채널 인스턴스 생성- 채널을 사용하기 위해서는 먼저 채널 인스턴스를 만들어야 함.var message chan string = make(chan string) - 슬라이스, 맵 등과 같이 make() 함수로 만들 수 있고, 채널 타입은 채널(Channel)을 의미하는 Chan과 메시지 타입을 합쳐서 표현- chan string은 string 타입 메..

Language/Golang 2024.12.11

Golang (Go언어) Go루틴

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 스레드(Thread)- 프로세스 안의 세부 작업 단위- 프로세스는 스레드를 한 개 이상 가지고 있음.- 스레드가 하나면 싱글 스레드 프로세스, 여럿이면 멀티 스레드 프로세스라고 함. → 초기 컴퓨터에서 사용한 천공카드 다발을 스레드라고 부를 수 있고, 명령어가 적힌 종이 다발을 CPU가 한 줄씩 읽어서 수행하는게 컴퓨터     CPU 코어는 한 번에 하나의 명령어 다발 = 스레드를 수행할 수 있음.- 원래 CPU 코어는 한 번에 한 명령어 밖에 수행할 수 없음- 스레드가 CPU 코어를 빠르게 교대로 점유하면 동시에 모든 스레드가 실행되는 것 처럼 보임. * 컨텍스트 스위칭(Context Switching) 비용- CPU 코어가 여러 ..

Language/Golang 2024.12.07

Golang (Go언어) 에러 핸들링

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 에러 핸들링(Error handling)- 프로그램의 에러를 처리하는 방법을 의미- 에러는 프로그래머의 실수로 발생하지만, 때로는 외부적 요인(메모리/디스크 부족, 네트워크 단절 등)에 의해 발생되기도 함.- 에러가 발생하면 경우에 따라 프로그램을 종료하거나 적절한 방식으로 처리하여 프로그램을 계속 실행시킬 수 있음.  에러 반환- 에러를 처리하는 가장 기본 방식은 에러를 반환하고 알맞게 처리하는 방식ex) ReadFile() 함수로 파일을 읽을 때 해당하는 파일이 없어 에러가 발생package mainimport ( "bufio" "fmt" "os")func ReadFile(filename string) (string, error)..

Language/Golang 2024.12.05

Golang (Go언어) 자료 구조(Data Structure) 2/2

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다.맵(Map)- 키와 값 형태로 데이터를 저장하는 자료구조- 언어에따라 딕셔너리(Dictionary), 해시 테이블(Hash table), 해시 맵(Hash map)등으로 부름. - 맵은 키와 값의 쌍으로 데이터를 저장하고, 키를 사용해 접근하여 값을 저장하거나 변경할 수 있음.- 맵은 Go언어에서 패키지가 아닌, 기본 내장 타입이라 다른 패키지를 가져오지 않아도 사용할 수 있음.map[key]value → map[] 안에 사용한 string은 키 타입이고, 맨 뒤에 있는 string은 값 타입임.package mainimport "fmt"func main() { m := make(map[string]string) // 맵 생성 m["..

Language/Golang 2024.12.03

Golang (Go언어) 자료 구조(Data Structure) 1/2

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 자료 구조(Data Structure)- 자료들을 어떤 형태로 저장할 것인가를 나타냄.- 크게 배열, 리스트, 트리, 맵 등이 있음. 리스트(List)- 기본 자료 구조로서 여러 데이터를 보관할 수 있음- 베열과 함께 가장 기본적인 선형 자료구조 중 하나(하나의 데이터에 다음 데이터가 연결되는 것, 1:1 구조)   * 비선형 구조: 하나의 데이터에 2-3개의 데이터가 연결되는 것, ex) 트리 구조=폴더- 배열과 가장 큰 차이점은 배열은 연속된 메모리에 데이터를 저장하지만, 리스트는 불연속된 메모리에 데이터를 저장함.- 리스트는 데이터를 담고 있는 요소들을 포인터로 연결한 자료 구조- 요소들이 포인터로 연결됐다고 해서 링크드 리스트..

Language/Golang 2024.12.02