go 21

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

Golang (Go언어) 함수고급편

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 가변 인수 함수- fmt패키지의 Println 함수는 인수 개수가 정해져있지 않음.fmt.Println() // 인수가 없을 수도 있고fmt.Println(1) // 인수가 1개일 수도 있고fmt.Println(1, 2, 3, 4, 5, 6, 7, 8, 9) // 인수가 많을 수도 있음. → 위와 같이 함수 인수 개수가 고정적이지 않은 함수를 가변 인수 함수(Variadic function)이라고 함. ... 키워드 사용- ... 키워드를 사용해서 가변 인수를 처리할 수 있음- 인수 타입 앞에 ...를 붙여서 해당 타입 인수를 여러 개 받는 가변 인수임을 표시하면 됨.package mainimport "fmt"func sum..

Language/Golang 2024.11.29

Golang (Go언어) 인터페이스(Interface)

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 인터페이스(Interface)- 구체화된 객체(Concrete objecr)가 아닌 추상화된 상호작용으로 관계를 표현 ✓ 인터페이스 선언1) type을 씀2) 인터페이스명을 씀3) 인터페이스 키워드를 씀4) { } 블록 안에 인터페이스에 포함된 메서드 집합을 씀type DuckInterface interface { Fly() Walk(distance int) int} - 인터페이스도 구조체처럼 타입 중 하나이기 때문에 type을 써야 함.   = 변수 선언이 가능하고 변수의 값으로 사용할 수 있음. ✓ 메서드 집합을 쓸 때 주의할 점- 메서드는 반드시 메서드명이 있어야 함.(빈칸 지시자(_) 사용 불가)- 매개변수와 반환이 다르더..

Language/Golang 2024.11.27

Golang (Go언어) 메서드(Method)

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. 메서드(Method)- 타입에 속한 함수- 메서드 선언하려면 리시버를 func 키워드와 함수 이름 사이에 소괄호로 명시해야 함- 리시버는 모든 패키지 지역 타입이 가능함 (구조체, 별칭 타입 등)func (r Rabbit) info() int { //(r Rabbit) = 리시버, info() = 메서드 명 return r.width * r.height} package mainimport "fmt"type account struct { balance int}func withdrawFunc(a *account, amount int) { // 일반 함수 표현 a.balance -= amount}func (a *account)..

Language/Golang 2024.11.27

Golang (Go언어) 슬라이스(Slice) 2/2

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. * 흔히 하는 실수package mainimport "fmt"func addNum(slice []int) { slice = append(slice, 4)}func main() { slice := []int{1, 2, 3} addNum(slice) fmt.Println(slice)}// 결과[1 2 3] - slice  := []int{1, 2, 3}을 addNum의 인자를 새로 넣었는데, 이는 main의 slice와 다른 인스턴스임- 호출 될 때 main slice 값으로 Num slice에 type size만큼 복사해서 main과 동일함. (포인터, len, cap 동일)- main slice와 Num slice는 메모리 주소가 다..

Language/Golang 2024.11.20

Golang (Go언어) 슬라이스(Slice) 1/2

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다. ★슬라이스(Slice)★- Go에서 제공하는 동적 배열 타입 → Go에서 제공하는 배열을 가리키는 포인터 타입→ 동적(Dynamic), 프로그램 실행 도중에 결정(실행도중에 바뀔 수 있는 값)    정적(Static), 코드를 기계어로 바꿀 때 결정(실행도중에 절대 바뀌지 않는 값)var slice []int// var  - 타입의 [](가운데) 사이즈를 적지 않고 뒤에 요소 타입을 적음(ex. int, str 등) package mainimport "fmt"func main() { var slice []int if len(slice) == 0 { fmt.Println("slice is empty", slice) } slice[1..

Language/Golang 2024.11.19

Golang (Go언어) 패키지(Package)

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다.  패키지(Package)- Go 언어에서 코드를 묶는 가장 큰 단위- 다른 언어에서는 네임스페이스(namespace)라는 키워드를 사용해서 코드 영역을 분리하기도 하지만,    Go언어에서는 네임스페이스를 지원하지 않고 패키지를 사용함.- 프로그램은 main 패키지(필수 요소) 하나와 여러 외부 패키지(선택 요소)로 구성됨. main 패키지- 특별한 패키지 프로그램 시작점을 포함한 패키지로 프로그램 시작점이란 main() 함수를 의미 그 외 패키지- 한 프로그램은 main 패키지 외에 다수의 다른 패키지를 포함할 수 있음- 표준 입출력은 "fmt" 패키지를, 암호화 기능은 "crypto" 패키지를, 네트워크 기능은 "net" 패키지를..

Language/Golang 2024.11.09

Golang (Go언어) 문자열(String)

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다.  문자열- 문자 집합으로, 타입명은 string- 문자열은 큰따옴표(")나 백쿼트(`)로 묶어서 표시(그레이브(grave)라고도 부름)- 백쿼트로 문자열을 묶으면 문자열 안의 특수 문자가 일반 문자처럼 처리 됨package mainimport "fmt"func main() { poet1 := "죽는 날까지 하늘을 우러러\n 한 점 부끄럼이 없기를,\n잎새에 이는 바람에도\n나는 괴로워했다.\n" poet2 := `죽는 날까지 하늘을 우러러한 점 부끄럼이 없기를,잎새에 이는 바람에도 나는 괴로워했다.` fmt.Println(poet1) fmt.Println(poet2)}// 결과죽는 날까지 하늘을 우러러 한 점 부끄럼이 없기를,잎새에 ..

Language/Golang 2024.11.08