programing tip

Go에서 fmt.Println ()과 println ()의 차이점은 무엇입니까?

itbloger 2020. 8. 12. 07:52
반응형

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

따라서 개발자에게 유용합니다. 왜냐하면 종속성 (컴파일러에 빌드 됨)이 부족하기 때문이지만 프로덕션 코드에는 없습니다. 또한이 사실 printprintln 기록하고 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

참고URL : https://stackoverflow.com/questions/14680255/whats-the-difference-between-fmt-println-and-println-in-go

반응형