Go에서 fmt.Println ()과 println ()의 차이점은 무엇입니까?
Go에서 무언가를 인쇄하려면 다음과 같이 할 수 있습니다.
import "fmt"
func main(){
fmt.Println("Hello world!")
}
하지만 가져 오지 않고도 똑같이 할 수 있다는 것을 알았습니다 fmt
.
func main(){
println("Hello world!")
}
누군가 설명해 주시겠습니까?
println
최종적으로 제거 될 수있는 내장 함수 (런타임에 포함)이며 fmt
패키지는 지속될 표준 라이브러리에 있습니다. 해당 주제에 대한 사양 을 참조하십시오 .
언어 개발자의 경우 println
종속성 이 없는 것이 편리 하지만 fmt
패키지 또는 이와 유사한 것을 사용하는 것이 좋습니다 ( log
예 :).
구현 에서 볼 수 있듯이print(ln)
함수는 원격으로 다른 출력 모드를 지원하도록 설계되지 않았으며 주로 디버그 도구입니다.
니모의 대답을 바탕으로 :
println
언어에 내장 된 함수입니다. 사양 의 부트 스트랩 섹션에 있습니다. 링크에서 :
현재 구현은 부트 스트랩 중에 유용한 몇 가지 내장 기능을 제공합니다. 이러한 기능은 완전성을 위해 문서화되어 있지만 해당 언어로 유지된다는 보장은 없습니다. 결과를 반환하지 않습니다.
Function Behavior print prints all arguments; formatting of arguments is implementation-specific println like print but prints spaces between arguments and a newline at the end
따라서 개발자에게 유용합니다. 왜냐하면 종속성 (컴파일러에 빌드 됨)이 부족하기 때문이지만 프로덕션 코드에는 없습니다. 또한이 사실 print
을 println
기록하고 stderr
, 아니라 에게보고stdout
하는 것도 중요합니다 .
fmt
그러나에서 제공하는 제품군 은 프로덕션 코드로 빌드되었습니다. stdout
달리 지정되지 않는 한에 예상대로보고 합니다. 그들은 더 다양한 (하는 fmt.Fprint*
모든에보고 할 수 io.Writer
같은 os.Stdout
, os.Stderr
또는 심지어 net.Conn
. 형) 및 구현 특정되지 않습니다.
출력에 대한 책임이 있습니다 대부분의 패키지는이 fmt
같은 종속성으로 log
. 프로그램이 프로덕션에서 출력하는 것이 있다면 fmt
원하는 패키지 일 가능성이 큽니다.
차이점은 이것이 예입니다.
println()
함수 테스트의 주소에 대한 포인터 포인트를 인쇄합니다.
fmt.Println()
함수의 주소를 인쇄합니다.
여기서 차이점을 볼 수 있습니다.
rangeOverIntsAndStrings (1, 5)
func rangeOverIntsAndStrings(args ...interface{}) {
for _, v := range args {
println(v)
}
}
// 출력
(0x108f060,0x10c5358)
(0x108f060,0x10c5360)
vs
func rangeOverIntsAndStrings(args ...interface{}) {
for _, v := range args {
fmt.Println(v)
}
}
//산출
1
5
'programing tip' 카테고리의 다른 글
.h.gch 파일이란 무엇입니까? (0) | 2020.08.12 |
---|---|
다른 스레드에서 발생한 예외 포착 (0) | 2020.08.12 |
React Enzyme은 두 번째 (또는 n 번째) 노드를 찾습니다. (0) | 2020.08.12 |
data.frame 열 이름을 함수에 전달 (0) | 2020.08.12 |
PHP-문자열 문자 반복 (0) | 2020.08.11 |