2014-01-22 4 views
2

Ruby에서 bash과 같은 문자열 리터럴에서 변수를 직접 캡처 할 수있었습니다.Go에서 문자열 리터럴에서 변수를 캡처합니까?

SRCDIR = "aaa" 
DSTDIR = "bbb" 

puts "SRCDIR = #{SRCDIR}" 
puts "DSTDIR = #{DSTDIR}" 

이 간단하고 작은 기능을하지만 쉘 스크립트처럼 느낄 수 있도록 아주 좋은 것입니다. 복잡한 쉘 스크립트를 작성해야 할 경우 대체, 결합 및 형식 표현이 필요 없기 때문에이 작업이 많은 도움이됩니다.

이동은 어떻게됩니까? 만약 그렇다면 어떻게 사용합니까?

+1

Go는 스크립팅 언어를 목표로하지 않습니다. – Agis

+0

매개 변수화 된 텍스트를 만들려는 경우'text/template' 패키지를 확인하십시오. –

답변

2

서식 지정 문자열이 없습니다. 이 작업을 수행하는 일반적인 방법은 fmt.Printf 또는 fmt.Sprintf 함께 :

srcdir := "aaa" 
dstdir := "bbb" 

// separated out Sprintf and Println for clarity 
fmt.Println(fmt.Sprintf("SRCDIR = %s", srcdir)) 
fmt.Println(fmt.Sprintf("DSTDIR = %s", dstdir)) 

// could be shortened if you're just printing them 
fmt.Printf("SRCDIR = %s\n", srcdir) 
fmt.Printf("DSTDIR = %s\n", dstdir) 
+1

또한 문자열에서 인덱스 위치를 지정하고 매개 변수의 순서와 정확히 같은 형식으로 지정할 수는 없습니다. 예 : -'fmt.Printf ("dstdir = % [2] s srcdir = % [1] s", srcdir, dstdir)' –

0

웨스 말했다 무엇. 사용자 지정 형식을 사용하는 경우에는 String() string (실제로는 fmt.Stringer 인터페이스를 충족하도록) 서명을 가진 메서드를 정의한 다음이 형식의 인스턴스를 fmt 패키지의 함수에 직접 전달할 수 있습니다 fmt.Println()과 같은 문자열 이에 대한 간단한 소개는 "Effective Go"에서 찾을 수 있습니다.

관련 문제