গো এর সমমানের আরগভি [0]?


103

রানটাইমে আমি কীভাবে নিজের প্রোগ্রামটির নাম পেতে পারি? গো / এর সি + সি ++ এর আরগভ [0] এর সমতুল্য কী? আমার কাছে এটি সঠিক নামের সাথে ব্যবহার উত্পন্ন করতে দরকারী।

আপডেট: কিছু কোড যুক্ত।

package main

import (
    "flag"
    "fmt"
    "os"
)

func usage() {
    fmt.Fprintf(os.Stderr, "usage: myprog [inputfile]\n")
    flag.PrintDefaults()
    os.Exit(2)
}

func main() {
    flag.Usage = usage
    flag.Parse()

    args := flag.Args()
    if len(args) < 1 {
        fmt.Println("Input file is missing.");
        os.Exit(1);
    }
    fmt.Printf("opening %s\n", args[0]);
    // ...
}

2
flag.Args()এখানে দৈর্ঘ্য সনাক্ত না করে আপনি ব্যবহার করতে পারেনflag.NArg()
কীথ স্মাইলি

2
সঠিক উত্তর os.Args[], না flag.Args()। পতাকা প্যাকেজটি কমান্ড লাইন আর্গুমেন্টের মত পার্সিংয়ের জন্য -this -that, এবং flag.Args()বিশ্লেষণযোগ্য নয় এমন বাকী যুক্তি ফিরিয়ে দেয়। এখানে একটি উদাহরণ রয়েছে: play.golang.org/p/_YtTcqLWnl
ফিরিক্স

উত্তর:


145
import "os"
os.Args[0] // name of the command that it is running as
os.Args[1] // first command line parameter, ...

Http://golang.org/pkg/os/# ভেরিয়েবলগুলিos প্যাকেজে আর্গুমেন্টগুলি প্রকাশ করা হয়

আপনি যদি আর্গুমেন্ট হ্যান্ডলিং করতে যাচ্ছেন তবে flagপ্যাকেজটি http://golang.org/pkg/flag পছন্দসই উপায়। বিশেষত আপনার ক্ষেত্রেflag.Usage

আপনি যে উদাহরণ দিয়েছেন তার জন্য আপডেট করুন:

func usage() {
    fmt.Fprintf(os.Stderr, "usage: %s [inputfile]\n", os.Args[0])
    flag.PrintDefaults()
    os.Exit(2)
}

কৌতুক করা উচিত


পতাকাটিতে কীভাবে পাবেন তা আমি বুঝতে পারি না এবং ওএসের কাছে এই তথ্য রয়েছে তা আমি জানতাম না। ধন্যবাদ।
গ্রুকাস

1
সতর্কতা - আপনি যদি "গো রান" এর মাধ্যমে কোনও প্রোগ্রাম শুরু করে থাকেন তবে এই কৌশলটি ব্যবহার করবেন না, আপনি স্বয়ংক্রিয় জেনারেট a.out পাবেন।
ব্র্যাড ক্লাওসি

11
@ ব্র্যাডক্লাউজি আপনি a.out পেয়ে যাবেন কারণ এটিই মৃত্যুদন্ড কার্যকরের নাম, আচরণটি এখনও সঠিক।
cthom06

16

ওএস প্যাকেজ os.Args[0]থেকে ব্যবহার করুন

package main
import "os"
func main() {
    println("I am ", os.Args[0])
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.