আমি কি সমস্ত স্ট্যান্ডার্ড গো প্যাকেজ তালিকাবদ্ধ করতে পারি?


186

সমস্ত মানক / অন্তর্নির্মিত প্যাকেজগুলির তালিকা (যেমন, প্যাকেজগুলি যা গো ইনস্টলের সাথে ইনস্টল করা হয়) এর তালিকাতে যাওয়ার কোনও উপায় আছে কি ?

আমার কাছে প্যাকেজগুলির একটি তালিকা রয়েছে এবং আমি বুঝতে পারি যে কোন প্যাকেজগুলি প্রমিত।


7
ডিফল্ট Goপ্যাকেজগুলি golang.org/pkg
আর্স্লানবিকভ

isStandardPackage(importPath string) boolআমি যেমন ব্যবহার করতে পারি তার মতো কোনও ফাংশন আছে ?
অলোক কুমার সিং


আমি আপনাকে সমস্ত ইনস্টল প্যাকেজ প্রদর্শন তালিকা মনে করি।
আরস্লানবিকভ

আপনি এখানে কি অর্জন করার চেষ্টা করছেন? আমদানি বিবৃতি ছাড়া .আপনার নিজের অভ্যন্তরীণ প্যাকেজ বা মানক গ্রন্থাগারের একটি অংশ।
ifnotak

উত্তর:


49

আপনি golang.org/x/tools/go/packagesএই জন্য নতুন ব্যবহার করতে পারেন । এটি বেশিরভাগের জন্য একটি প্রোগ্রামেটিক ইন্টারফেস সরবরাহ করে go list:

package main

import (
    "fmt"

    "golang.org/x/tools/go/packages"
)

func main() {
    pkgs, err := packages.Load(nil, "std")
    if err != nil {
        panic(err)
    }

    fmt.Println(pkgs)
    // Output: [archive/tar archive/zip bufio bytes compress/bzip2 ... ]
}

একটি পেতে isStandardPackage()আপনি এটি একটি মানচিত্রে সঞ্চয় করতে পারেন:

package main

import (
    "fmt"

    "golang.org/x/tools/go/packages"
)

var standardPackages = make(map[string]struct{})

func init() {
    pkgs, err := packages.Load(nil, "std")
    if err != nil {
        panic(err)
    }

    for _, p := range pkgs {
        standardPackages[p.PkgPath] = struct{}{}
    }
}

func isStandardPackage(pkg string) bool {
    _, ok := standardPackages[pkg]
    return ok
}

func main() {
    fmt.Println(isStandardPackage("fmt"))  // true
    fmt.Println(isStandardPackage("nope")) // false
}

তাত্ক্ষণিকভাবে okকোথা থেকে আসে এবং এই দুর্দান্ত নিবন্ধটি খুঁজে পেয়েছিল। reddit.com/r/golang/comments/35d0b2/about_the_comma_ok_idiom
ভেতরের

2
packages.Load(nil, "std")কল executes go listকমান্ড এবং আউটপুট parses। আমি অন্যদের জন্য এটি নোট করি যারা প্যাকেজটি কমান্ড বাস্তবায়ন সরবরাহ করে এমন ভুল ধারণাও তৈরি করতে পারে।
iLoveRiflection

32

go list stdস্ট্যান্ডার্ড প্যাকেজগুলি তালিকা করতে কমান্ডটি ব্যবহার করুন । stdস্ট্যান্ডার্ড গো লাইব্রেরিতে ( ডক ) সমস্ত প্যাকেজগুলিতে বিশেষ আমদানি পথ প্রসারিত ।

একটি গো প্রোগ্রামে তালিকা পেতে সেই আদেশটি সম্পাদন করুন:

cmd := exec.Command("go", "list", "std")
p, err := cmd.Output()
if err != nil {
    // handle error
}
stdPkgs = strings.Fields(string(p))

3

আপনি যদি একটি সহজ সমাধান চান, আপনি check GOROOT / pkg তে কোনও প্যাকেজ উপস্থিত কিনা তা পরীক্ষা করতে পারেন। সমস্ত মানক প্যাকেজ এখানে ইনস্টল করা আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.