golang 30

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 정규표현식

Go에서 제공하는 regexp패키지를 이용해서 정규표현식을 이용 할 수 있다. MatchString()메서드는 정규표현에 일치하는 문자열이 있는지를 검사한다. 일치할 경우 true를 반환한다. MatchString()에서는 문자열에 대한 패턴매칭을 즉시수행 했다. 하지만 많은 경우 패턴을 저장해 놓고 사용하게 될 것이다. Compile()메서드를 이용 해서 정규식이 필요 할 때마다 컴파일 할 수 있다. FindString()메서드로 일치하는 문자열을 찾을 수 있다. 일치는 한번만 이루어진다. 전체 문자열에서 일치하는 문자열을 찾기 위해서는 FindAllString()메서드를 이용하면 된다. Index가 붙는 메서드들은 일치하는 문자열의 위치를 반환한다. Submatch가 붙는 메서드들은 submatch되..

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