본문 바로가기
  • GDG on campus Ewha Tech Blog

3-1기 스터디/Golang8

[10주차] 단어 검색 프로그램 만들기, 객체지향 설계 원칙 SOLID 안녕하세요! 지난 1월 19일 수요일에 진행한 10주차 스터디 내용 정리해보겠습니다! 이번에는 두 번째 프로젝트 챕터 단어 검색 프로그램과 객체지향 설계 원칙 SOLID에 대해 공부해봤습니다. Ch26 단어 검색 프로그램 1. 해법 해법은 간단합니다. 파일 목록을 실행 인수로 넘겨주면 해당 파일을 하나씩 열어서 라인을 읽고 단어가 등장하면 결과에 추가하고 파일이 끝날 때까지 검사를 해서 모든 파일을 검사하면 결과를 출력하는 프로그램입니다. 2. 사전 지식 와일드카드 와일드카드를 사용해서 경로를 나타내면 여러 파일을 한 번에 불러올 수 있습니다. os.Args 변수와 실행 인수 콘솔창에서 실행 명령을 수행할 때 실행 인수를 함께 넘겨주면 Args 슬라이스에 추가됩니다. 파일 핸들링 파일 열기 Open 함수.. 2022. 1. 22.
[9주차] 고루틴과 동시성 프로그래밍, 채널과 컨텍스트 Chapter 24. goroutine 24.1 스레드란? 고루틴: 경량 스레드 함수나 명령을 동시에 실행할 때 사용 💡 컨텍스트 스위칭 비용 X 원래 CPU는 한 번에 하나의 스레드만 처리할 수 있어서, 효율성을 위해 여러 스레드를 전환하면 ‘컨텍스트 스위칭’ 비용이 발생한다. 적정 개수를 넘어 한 번에 너무 많은 스레드를 수행하게 되면 성능이 저하되어 주의해야 한다. 하지만 Go 언어에서는 CPU 코어마다 OS 스레드를 하나만 할당해서 사용하므로, 컨텍스트 스위칭 비용이 발생하지 않는다. 이를 가능하게 해주는 것이 고루틴이다. 24.2 고루틴 (goroutine) 모든 프로그램은 고루틴을 최소 하나 가짐 (→ 메인 루틴) go 함수_호출 //메인 루틴 외에 고루틴 추가 생성 package main i.. 2022. 1. 20.
[6주차] 숫자 맞추기 게임 만들기, Go 언어의 슬라이스 안녕하세요, 12월의 시작을 함께 맞이한 고랭 스터디입니다! 이번 주는 17장 숫자 맞추기 게임 만들기, 18장 슬라이스를 공부했습니다! Ch 17. 숫자 맞추기 게임 처음으로 Project 형식의 챕터를 공부했습니다! 숫자 맞추기 게임의 조작법입니다. math/rand 패키지 랜덤한 숫자를 얻으려면 math/rand 패키지를 임포트해야 합니다. func Intn(n int) int 0 ~ n-1 사이의 int 타입 랜덤값을 생성하는 함수입니다. 단, 컴퓨터의 논리회로와 산술연산은 랜덤값을 만들기 적합하지 않고 이는 단지 유사 랜덤값입니다. 랜덤값이 산출되는 초깃값이 같기 때문에 실행할 때마다 매번 랜덤 시드를 다른 값으로 설정해야합니다. func Seed(seed int64) 랜덤 시드를 설정하는 함수.. 2021. 12. 1.
[5주차] Chapter 15~16. 문자열, 패키지 안녕하세요 ㅎㅎ 고랭 스터디입니다. 이번 주에는 15장 문자열, 16장 패키지를 배워보았습니다. 특히 Go는 문자열을 다루는 방식이 특이해서, 저희 모두 스터디에서 신기해했던 기억이 나는데요~! 자세한 내용은 아래 정리를 참고해주세요 :) Chapter 15. String 15.1 문자열 Go의 문자열 출력 방법은 2가지가 있다. 큰따옴표 백쿼트 package main import "fmt" func main() { // 1) 큰따옴표로 묶기 str1 := "Hello\\t'World'\\n" poet1 := "죽는 날까지 하늘을 우러러\\n한 점 부끄럼이 없기를\\n" // 2) 백쿼트로 묶기 str2 := `Hello\\t"Go"\\nWorld!` poet2 := `죽는 날까지 하늘을 우러러 한 점 .. 2021. 11. 30.
[4주차] Go 언어의 배열, 구조체, 포인터 Chapter 12. Array (배열) 배열이란? : 같은 타입의 데이터들로 이루어진 타입 요소 (elements) : 배열을 이루는 각 값 인덱스 (index) : 요소를 가리키는 위치값 배열 변수 선언하기 1. 할당만 하고 초기화를 하지 않는 경우 var v[5] int //[0,0,0,0,0] 2. 할당하고 초기화까지 한 경우 v := [...]int{1,2,3} //[1,2,3] 3. 할당하고 초기화는 일부만 하는경우 v := [5] int {1,2,3} //[1,2,3,0,0] var s = [5] int{1:10, 3:30} //[10,0,0,30,0] 배열의 선언은 항상 상수로 해야한다! Range 순회 해당 배열을 처음부터 끝까지 도는 반복문을 간단하게 나타낼 수 있다! 배열은 연속된 메.. 2021. 11. 22.
[3주차] Go언어의 if, switch, for Golang 3주차 스터디 이제부터 Golang만의 특성이 하나둘씩 나타나고 있어서 재미있어지기 시작했습니다! :) 그럼 시작해 볼까요? 09. IF 쇼트서킷 쇼트서킷(short-circuit) && 연산은 좌변이 false이면 우변을 검사하지 않고 false 처리 || 연산 또한 좌변이 true이면 우변을 검사하지 않고 true 처리 조건문 우변이 실행되지 않을 수 있으므로 염두에 두고 코드를 구현해야 합니다! package main import "fmt" var cnt int = 0 func IncreaseAndReturn() int { fmt.Println("IncreaseAndReturn()", cnt) cnt++ return cnt } func main() { if false && Increas.. 2021. 11. 11.