Dalam tutorial Go, dan sebagian besar kode Go yang telah saya lihat, paket diimpor seperti ini:
import (
"fmt"
"os"
"launchpad.net/lpad"
...
)
Namun di http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go , paket gocheck diimpor dengan .
(titik):
import (
"http"
. "launchpad.net/gocheck"
"launchpad.net/lpad"
"os"
)
Apa pentingnya .
(periode)?
Jawaban:
Ini memungkinkan pengidentifikasi dalam paket yang diimpor untuk dirujuk di blok file lokal tanpa kualifikasi.
Import declaration Local name of Sin import "lib/math" math.Sin import M "lib/math" M.Sin import . "lib/math" Sin
Ref: http://golang.org/doc/go_spec.html#Import_declarations
sumber
import "fmt"
vsimport . "fmt"
, tetapi dalam kedua kasus ukurannya sama untuk saya.)Berikut analogi mereka yang berasal dari Python:
import "os"
kira-kira setara dengan Pythonimport os
import . "os"
kira-kira setara dengan Pythonfrom os import *
Dalam kedua bahasa, menggunakan yang terakhir umumnya tidak disukai tetapi ada alasan bagus untuk melakukannya.
sumber
Ini hanya boleh digunakan dalam pengujian.
Berikut adalah beberapa dokumentasi di wiki golang
Jika Anda telah membuat beberapa kode tiruan seperti dengan mockgen dan itu mengimpor kode paket Anda, dan kemudian paket pengujian Anda juga mengimpor kode paket Anda, Anda mendapatkan ketergantungan melingkar (Sesuatu golang memilih untuk membiarkan pengguna memutuskan bagaimana menyelesaikannya).
Namun, jika di dalam paket pengujian Anda menggunakan notasi titik pada paket yang Anda uji maka paket tersebut diperlakukan sebagai paket yang sama dan tidak ada ketergantungan melingkar yang bisa didapat!
sumber