본문 바로가기

프로그래밍/Golang4

[GOLANG] 공부 (4) ● s라는 문자열 내에서 각각의 "단어"의 등장 횟수를 나타내는 맵 반환 함수 import "strings" func WordCount(s string) map[string]int { wordString := make(map[string]int) for _,word := range strings.Fields(s) { wordString[word]++ } return wordString } *스위치 (Switch) - case의 코드 실행을 마치면 알아서 break 함 > fallthrough로 끝나는 case는 스스로 break를 하지 않음. switch os := runtime.GOOS; os { case "darwin": fmt.Println("OS X.") case "linux": fmt.Print.. 2020. 10. 29.
[GOLANG] 공부 (3) - import 패키지 > 패키지 이름은 디렉토리 경로의 마지막 이름을 사용. - import (pkg1, pkg2, ...) || import "pkg1" import "pkg2" - 첫 문자가 대문자로 시작 > 패키지를 사용하는 곳에서 접근 가능한 exported name math.pi : cannot refer to unexported name math.pi mathPi : 3.141592653589793 *함수 - 매개변수 타입은 변수명 뒤에 명시 - x int, y int > x, y int - 하나의 함수는 여러 개의 결과 반환 가능 - 반환 값에 이름을 부여하면 변수처럼 사용 가능, 반환 값을 지정하지 않고 return해도 알아서 반환 package main import "fmt" func .. 2020. 10. 29.
[GOLANG] 공부 (2) * reflection : 실행 시점(runtime)에 인터페이스나 구조체 등의 타입 정보를 얻어내거나 결정하는 기능 - reflect.TypeOf(변수명이나 구조체명) > Name(), Size(), Kind() / 구조체 : FieldByName(필드명), FieldByName(필드명).Get(태그명) - reflect.ValueOf(변수명이나 구조체명) > Type(), Kind(), Float() ... - reflect.ValueOf(변수명이나 구조체명) > 포인터 : Elem(), Elem().Int() (값을 다시 얻어와 타입에 맞게 가져옴) // 인터페이스 : Int() (바로 가져옴) * reflection을 사용하여 동적으로 함수 생성 방법 > 타입별로 함수 구현 방지 var hello.. 2020. 10. 29.
[GOLANG] 공부 (1) * 클로저를 고루틴으로 실행할 때 반복문에 의해 바뀌는 변수는 반드시 매개변수로 넘겨줌 ! > 고루틴은 반복문이 완전히 끝난 다음에 생성됨 * 채널은 값을 주고 받는 동시에 동기화 역할까지 수행 * 동기 채널은 보내는 쪽에서는 값을 받을 때까지 대기하고, 받는 쪽에서는 채널에 값이 들어올 때까지 대기함 > 동기 채널을 활용하면 고루틴의 코드 실행 순서 제어 가능 * 채널에 버퍼를 1개 이상 설정하면 비동기 채널이 생성됨 (asynchronous channel) done := make(chan bool, 2) //버퍼가 2개인 비동기 채널 생성 * 비동기 채널은 보내는 쪽에서 버퍼가 가득 차면 실행을 멈추고 대기하며 받는 쪽에서는 버퍼에 값이 없으면 대기; * 비동기 채널을 사용할 때는 실행 순서나 채널 .. 2020. 10. 29.