2014-12-25 6 views
2

Я не уверен, как вызываются пакеты Go. Например, если я хочу создавать случайные числа, я должен импортировать "math/random", но разве это не просто часть библиотеки "math"? Так почему же не этот кусок коды работы:Использование пакетов Go

package main 

import(
    "fmt" 
    "math" 
) 

func main(){ 
    r := rand.New(rand.NewSource(99)) 
    fmt.Println(r) 

} 

Я имею в виду, я просто не могу получить прямой доступ к случайным функциям, просто импортируя суперкласс (в данном случае, просто пакет математики "math")?

+1

Go не имеет ни классов, ни суперкласса. Пакеты имеют простые имена, имя «math/rand» не означает, что * * * пакет «математика» или что (если это так) между ними существует * любая * связь. Конечно, стандартная библиотека организована разумным образом, но имена и папки пакетов - это просто имена, папки и папки без какого-либо другого структурного объединения. – Volker

ответ

6

Это потому, что rand является отдельный пакет, который иерархически под math пакет math/rand, так что вы должны импортировать его специально:

package main 

import(
    "fmt" 
    "math/rand" 
) 

func main(){ 
    r := rand.New(rand.NewSource(99)) 
    fmt.Println(r) 

} 
Смежные вопросы