golang 28

golang Line Filters

라인 필터(Line Filters)는 표준입력 혹은 파일로 부터 읽은 데이터를 변형해서 출력하기 위해서 사용한다. grep이나 sed 같은 프로그램들이 전형적인 라인필터 프로그램이다. grep 같은 경우 데이터를 줄 단위로 읽어서 일치하는 문자열이 있으면 출력하고, sed는 문자열을 치환하거나 삭제하는 등의 일을 한다. main.gopackage mainimport ( "bufio" "fmt" "os" "strings")func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { ucl := strings.ToUpper(scanner.Text()) fmt.Println(ucl) } if err := scanner.Err(); err..

golang 2025.07.24

golang fmt 형식

fmt 패키지의 형식화된 출력에는 디버깅 목적으로 사용 할 수 있는 여러가지 출력 옵션들을 가지고 있다. format설명%v구조체의 값을 출력한다.%+ek.구조체의 필드이름과 값을 출력한다.%#g호출된 함수이름과 구조체의 이름 같은 소스코드 정보까지 함께 출력한다.%T타입을 출력한다.%t불리언의 값을 true 혹은 false 문자열로 출력한다.%dInteger 값을 출력하기 위해서 사용한다. 10자리 크기의 정수를 포함한 문자열 형식을 가진다.%b이진(바이너리)값을 출력한다.%c정수에 해당하는 문자를 출력한다.%xHex 인코딩 값을 출력한다.% xHex 인코딩 값을 출력한다.%f부동 소숫 점 값을 출력한다.%e과학적 표기법으로 출력한다.%E과학적 표기법으로 출력한다. %e와 다른점은 e가 대문자인지 소문..

golang 2025.07.24

golang map 동기화

map 자료 타입을 전역 변수로 사용할 때 mutex를 사용하지 않으면 다음과 같은 오류가 발생한다. fatal error: concurrent map writes fatal error: concurrent map read and map write main.gopackage mainimport ( "fmt" "sync" "time")var clientMap map[int]boolfunc main() { clientMap = make(map[int]bool, 11000) fmt.Println(len(clientMap)) mutex := sync.Mutex{} go Len1() go Len1() go Set2(&mutex) go Set2(&mutex) time.Sleep(time.Second) go Get2..

golang 2025.07.24

golang 함수 리턴값 named result

마지막에 반환형에 이름을 적는 것이다. 그러면 return에 적지 않더라도 자동으로 return이 되게 된다. num := 17up, down := split1(num)fmt.Println(up, down)up, down = split2(num)fmt.Println(up, down)up, down = split3(num)fmt.Println(up, down)fmt.Println("") func split1(num int) (up int, down int) { up = num / 10 down = num % 10 return up, down}func split2(num int) (up, down int) { up = num / 10 down = num % 10 return}func split3(num in..

golang 2025.07.24

golang 구조체 생성자 패턴

new 함수로 구조체의 메모리를 할당하는 동시에 값을 초기화하는 방법은 없습니다. 하지만 다음과 같은 패턴을 사용하여 다른 언어의 생성자(Constructor)를 흉내 낼 수 있습니다. rect := NewRectangle(20, 10)// rect := &Rectangle{20, 10} // 구조체를 초기화한 뒤 메모리 주소를 대입fmt.Printf("%p\n", rect)fmt.Println(rect)fmt.Println(*rect)fmt.Println("") type Rectangle struct { width int height int}// NewRectangle 구조체 생성자func NewRectangle(width int, height int) *Rectangle { r := Rectangl..

golang 2025.07.24

golang 현재 디렉토리 경로 가져오기

package mainimport ( "fmt" "os" "path/filepath")func main() { // 현재 작업 디렉토리 경로 가져오기 workPath, err := os.Getwd() if err != nil { panic(err) } fmt.Println(workPath) // 실행 파일 디렉토리 경로 가져오기 exeFilePath, err := os.Executable() if err != nil { panic(err) } exePath := filepath.Dir(exeFilePath) fmt.Println(exePath)} 심볼릭 링크를 사용할 경우 OS 별로 경로가 다를 수 있다.

golang 2025.03.11