문제 https://www.acmicpc.net/problem/1002 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A+B를 출력한다. 문제 풀이 문제 해석 및 계획 fmt 패키지를 사용하여 두 int형 변수 값을 받고 변수를 더하여 출력 오답 노트 package main import "fmt" func main(){ var a,b int fmt.Scanf("%d, %d",&a, &b) fmt.Println(a+b) } 입력을 받아 덧셈을 하는 간단한 알고리즘 문제입니다. Scanf로 입력을 받으려고 시도하였으나 Scanf는 콤마를 통하여 값을 나누어 받는다는 것을 몰라서 오류가 발생하였습니다. 정답 package main import "fmt" func main()..
Go 언어에서 고루틴 간에 안전하게 데이터를 전송하고 동기화하는 방법으로 채널이 있습니다. 채널을 생성하고 사용하는 방법, 채널의 다양한 활용 사례에 대하여 알아보겠습니다. 목차 채널이란? 콘텍스트란? 채널이란? 채널은 고루틴끼리 데이터를 주고받을 수 있는 메시지 큐입니다. 이전에 뮤텍스를 활용하여 변수를 잠겄던 방법은 데드락이 발생할 수 있었습니다. 하지만 채널은 특성상 데드락 발생 가능성이 크게 줄어듭니다. 채널 생성 var data1 chan str = make(chan string) data2 := make(chan int, 2) 채널은 make를 이용하여 생성합니다. make안에 채널타입이라는 것을 알리기 위한 chan과 채널에 넣을 type을 지정합니다. 채널을 data1처럼 생성하는 경우 채..
Go언어는 경량 스레드로 동시성 프로그래밍을 지원하는 고루틴이라는 기능을 제공합니다. 이를 통하여 효율적인 병행성을 구현할 수 있습니다. 고루틴의 사용법, 고루틴에 사용되는 뮤텍스, 뮤텍스가 발생시킬 수 있는 데드락에 대하여 알아보겠습니다. 목차 고루틴이란? 뮤텍스란? 데드락이란? 고루틴이란? 고루틴은 경량 스레드로서, Go언어의 주요 특징인 동시성을 지원하는 개념입니다. 고루틴은 하나의 스레드에서 관리되며, 작은 작업 단위로 프로그램을 병행 실행할 수 있습니다. main함수도 고루틴에서 실행되므로 프로그램이 실행되면 적어도 하나의 고루틴을 가지고 시작합니다. 예시 코드 package main import ( "fmt" "sync" "time" ) var wg sync.WaitGroup func twoS..
Go 언어는 강력한 타입 시스템을 가지고 있으며, 인터페이스는 이러한 타입 시스템의 핵심 개념 중 하나입니다. 인터페이스는 코드의 재사용성을 높이고 다형성을 지원하여 유연하고 확장 가능한 코드를 작성하는데 도움을 줍니다. 이러한 인터페이스를 알아보며 덕타이핑과 어댑터를 통하여 인터페이스의 활용방법 등에 대하여 설명해 보겠습니다. 목차 인터페이스란? 어댑터 패턴이란? 인터페이스란? 인터페이스는 메서드의 집합을 정의하는 타입입니다. struct와 달리 필드를 가지지 않고 메서드 시그니처만 포함합니다. struct처럼 interface도 type으로 선언합니다. interface 생성 다른 언어에서도 사용하였던 인터페이스지만 Go언어는 항상 새롭게 느껴집니다. type Shape interface { Area..