Di Rust kami dapat membawa sesuatu dari jalur modul bersarang ke dalam cakupan saat ini:

use rand::{Rng, thread_rng};

Alih-alih rand::thread_rng(), sekarang kita dapat menulis thread_rng().

Apakah ada yang setara di Go?

go
0
mazznoer 6 Juli 2020, 20:08

1 menjawab

Jawaban Terbaik

Yah, ya dan tidak. Anda tidak dapat mengimpor simbol tertentu saja, tetapi Anda dapat mengimpor seluruh paket ke dalam namespace Anda, menggunakan Dot Imports:

package main

import (
    . "fmt"
    . "math"
)

func main() {
    Println(Pi)
}

Namun ini menciptakan masalah tabrakan dalam simbol. Jika kita mencoba melakukan hal berikut misalnya - paket impor yang memiliki simbol yang sama:

import (
    . "crypto/md5"
    . "crypto/sha1"
)

Kami akan mendapatkan kesalahan berikut:

./prog.go:5:2: BlockSize redeclared during import "crypto/sha1"
    previous declaration during import "crypto/md5"
./prog.go:5:2: New redeclared during import "crypto/sha1"
    previous declaration during import "crypto/md5"
./prog.go:5:2: Size redeclared during import "crypto/sha1"
    previous declaration during import "crypto/md5"
./prog.go:5:2: Sum redeclared during import "crypto/sha1"
    previous declaration during import "crypto/md5"
./prog.go:5:2: imported and not used: "crypto/sha1

Jadi secara umum itu tidak disarankan, terutama di perpustakaan, dan hanya boleh digunakan dalam pengujian untuk menyelesaikan dependensi melingkar.

1
Not_a_Golfer 6 Juli 2020, 17:17