Menu
Coddy logo textTech

패키지 별칭 지정

Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 54번째.

때로는 파일 내에서 가져온 패키지에 다른 이름을 부여해야 할 때가 있습니다. 이를 패키지 별칭 지정(package aliasing)이라고 하며, Go는 간단한 구문을 통해 이를 쉽게 만들어 줍니다.

별칭(alias)을 만들려면, import 문에서 패키지 경로 앞에 새 이름을 지정합니다:

import f "fmt"

이제 fmt.Println()을 사용하는 대신, 더 짧은 f.Println()을 사용할 수 있습니다. 이는 특히 두 가지 상황에서 유용합니다: 축약하고 싶은 매우 긴 패키지 이름이 있는 경우, 또는 이름이 같은 패키지 간의 이름 충돌을 피해야 하는 경우입니다.

package main

import f "fmt"

func main() {
    f.Println("Hello with an alias!")
}

패키지 별칭 지정은 가져온 패키지를 참조하는 방식에 유연성을 제공하여, 코드의 가독성을 높이고 복잡한 임포트 시나리오를 관리하는 데 도움을 줍니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

challenge icon

챌린지

쉬움

여러 패키지를 사용자 정의 별칭(alias)으로 임포트하고, 이를 사용하여 다양한 작업을 수행함으로써 패키지 별칭 지정을 시연하는 프로그램을 작성하세요. 이 챌린지는 패키지에 의미 있는 별칭을 만들고 프로그램 전체에서 일관되게 사용하는 능력을 테스트합니다.

두 개의 입력을 받게 됩니다:

  • "package1:alias1,package2:alias2,package3:alias3" 형식의 패키지 별칭 정의가 포함된 문자열 (예: "fmt:output,strings:text,strconv:convert")
  • "operation1:data1|operation2:data2|operation3:data3" 형식의 수행할 작업이 포함된 문자열 (예: "print:Hello World|upper:go programming|parse:42")

당신의 과제는 다음과 같습니다:

  1. 쉼표를 기준으로 첫 번째 입력을 파싱하여 개별 패키지 별칭 정의를 가져옵니다.
  2. 각 별칭 정의에 대해 콜론을 기준으로 분리하여 원래 패키지 이름과 해당 별칭을 가져옵니다.
  3. 지정된 별칭을 사용하여 패키지를 임포트합니다:
    • 제공된 별칭으로 fmt를 임포트합니다.
    • 제공된 별칭으로 strings를 임포트합니다.
    • 제공된 별칭으로 strconv를 임포트합니다.
  4. 별칭 설정 정보를 표시합니다:
    • "=== PACKAGE ALIAS DEMONSTRATION ==="
    • "Setting up package aliases:"
    • 각 별칭에 대해: "- [original_package] aliased as '[alias]'"
  5. 파이프(|)를 기준으로 두 번째 입력을 파싱하여 개별 작업을 가져옵니다.
  6. 각 작업에 대해 콜론을 기준으로 분리하여 작업 유형과 데이터를 가져옵니다.
  7. 작업 헤더를 표시합니다: "Performing operations using aliases:"
  8. 각 작업에 대해 별칭이 지정된 패키지를 사용하여 해당 동작을 수행합니다:
    • "print" 작업의 경우: fmt 별칭을 사용하여 "[fmt_alias].Println: [data]"를 출력합니다.
    • "upper" 작업의 경우: strings 별칭을 사용하여 데이터를 대문자로 변환하고 "[strings_alias].ToUpper: [uppercase_data]"를 출력합니다.
    • "lower" 작업의 경우: strings 별칭을 사용하여 데이터를 소문자로 변환하고 "[strings_alias].ToLower: [lowercase_data]"를 출력합니다.
    • "parse" 작업의 경우: strconv 별칭을 사용하여 데이터를 정수로 파싱하고 "[strconv_alias].Atoi: [parsed_number]"를 출력합니다.
    • "format" 작업의 경우: fmt 별칭을 사용하여 형식을 지정하고 "[fmt_alias].Sprintf: Formatted -> [data]"를 출력합니다.
  9. 작업 통계를 계산하고 표시합니다:
    • "Operation Summary:"
    • "Total operations performed: [total_operations]"
    • "Packages used: [comma_separated_list_of_aliases_used]"
  10. 별칭 지정의 장점을 표시합니다:
    • "Benefits demonstrated:"
    • "- Shorter function calls using aliases"
    • "- Improved code readability"
    • "- Avoided potential naming conflicts"
  11. 완료 메시지를 표시합니다: "Package aliasing demonstration completed successfully"

입력 문자열을 분리하고 텍스트를 조작하려면 strings 패키지를, 문자열을 정수로 변환하려면 strconv 패키지를, 형식화된 출력에는 fmt 패키지를 사용하세요. 원래 패키지 이름 대신 프로그램 전체에서 별칭을 일관되게 사용해야 함을 기억하세요. 이 챌린지는 패키지 별칭 지정이 이름 충돌을 피하면서 코드를 더 간결하고 읽기 쉽게 만드는 방법을 보여줍니다.

치트 시트

패키지 별칭(package aliasing)을 사용하여 가져온 패키지에 파일 내에서 다른 이름을 부여할 수 있습니다:

import f "fmt"

이제 fmt.Println() 대신 f.Println()을 사용할 수 있습니다:

package main

import f "fmt"

func main() {
    f.Println("Hello with an alias!")
}

패키지 별칭은 다음과 같은 경우에 유용합니다:

  • 매우 긴 패키지 이름을 줄일 때
  • 이름이 같은 패키지 간의 이름 충돌을 피할 때
  • 코드 가독성을 높일 때

직접 해보기

package main

import (
	"bufio"
	f "fmt"
	"os"
	"sort"
	c "strconv"
	s "strings"
)

func main() {
	// 공백을 올바르게 처리하기 위해 bufio.Scanner를 사용하여 입력을 읽습니다.
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	aliasInput := scanner.Text()
	
	scanner.Scan()
	operationsInput := scanner.Text()
	
	// 별칭 정의를 파싱합니다.
	aliasDefinitions := s.Split(aliasInput, ",")
	
	// 연산을 파싱합니다.
	operations := s.Split(operationsInput, "|")
	
	// TODO: 아래에 코드를 작성하세요.
	// 1. 각 별칭 정의를 파싱하여 패키지 이름과 별칭을 가져옵니다 (길이 확인).
	// 2. 패키지 별칭 시연 헤더 및 설정 정보를 표시합니다.
	// 3. 적절한 별칭 패키지를 사용하여 각 연산을 처리합니다.
	// 4. 연산 횟수를 세고 어떤 별칭이 사용되었는지 추적합니다 (순서 유지 또는 정렬).
	// 5. 연산 요약 및 이점을 표시합니다.
	
	// 프로그램 전체에서 별칭을 일관되게 사용해야 함을 기억하세요.
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 & 흐름의 모든 레슨