'কি করে?' (ডট বা পিরিয়ড) কোনও Go আমদানির বিবৃতিতে কি করবেন?


135

গো টিউটোরিয়ালে এবং আমি যে গো গো কোড দেখেছি তার মধ্যে বেশিরভাগ প্যাকেজগুলি এইভাবে আমদানি করা হয়:

import (
    "fmt"
    "os"
    "launchpad.net/lpad"
    ...
)

কিন্তু এ http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go , gocheck প্যাকেজের মাধ্যমে একটি সঙ্গে আমদানি করা হয় .(সময়ের):

import (
    "http"
    . "launchpad.net/gocheck"
    "launchpad.net/lpad"
    "os"    
)

.(সময়কাল) এর তাত্পর্য কি ?


22
দ্রষ্টব্য, আমি অনুসন্ধানে আরও সহজ করার জন্য প্রশ্নটিতে বিন্দু এবং সময়কাল যুক্ত করেছি।
জ্যারেড ফারিশ

উত্তর:


182

এটি কোনও বাছাই ছাড়াই আমদানিকৃত প্যাকেজটিতে শনাক্তকারীদের স্থানীয় ফাইল ব্লকে উল্লেখ করতে দেয়।

যদি নামের পরিবর্তে একটি স্পষ্ট সময়কাল (।) উপস্থিত হয়, সমস্ত প্যাকেজের রফতানি শনাক্তকারীদের বর্তমান ফাইলের ফাইল ব্লকে ঘোষণা করা হবে এবং কোনও যোগ্যতা ছাড়াই অ্যাক্সেস করা যেতে পারে।

ধরুন আমরা প্যাকেজ ক্লজ প্যাকেজ গণিত সমন্বিত একটি প্যাকেজ সংকলন করেছি যা সিন ক্রিয়া রপ্তানি করে এবং "লিবিব / ম্যাথ" দ্বারা চিহ্নিত ফাইলটিতে সংকলিত প্যাকেজটি ইনস্টল করে ফেলেছে। এই টেবিলটি ব্যাখ্যা করে যে বিভিন্ন ধরণের আমদানির ঘোষণার পরে প্যাকেজ আমদানি করা ফাইলগুলিতে কীভাবে সাইন অ্যাক্সেস করা যেতে পারে।

Import declaration          Local name of Sin

import   "lib/math"         math.Sin
import M "lib/math"         M.Sin
import . "lib/math"         Sin

তথ্যসূত্র: http://golang.org/doc/go_spec.html#Import_declations


29
এটি লক্ষ করা উচিত যে গো দলটি ডট আমদানি ব্যবহারের পরামর্শ দেয় না। এটি নির্দিষ্ট ক্ষেত্রে কিছু অদ্ভুত আচরণের কারণ হতে পারে এবং অনির্দিষ্ট সময়ের জন্য ভাষাতে নাও থাকতে পারে।
জিমট

এটি কিছু পরিস্থিতিতে বিভ্রান্তিকর হতে পারে তবে গো-লিনাক ব্যবহার করে আমি এটি দাঁড়াতে পারিনি। github.com/ahmetlpbalkan/go-linq
স্টিভিসাম

নোট করুন যে আপনি এখনও রফতানিবিহীন ফাংশনগুলিতে (অ-বড় ফাংশন) অ্যাক্সেস পেতে পারবেন না। সুতরাং আমদানির এই উপায় সত্যিই sucks।
ডেভিড 天宇 ওয়াং

1
ডট আমদানি বনাম ডট আমদানি ব্যবহার করে কোনও প্রোগ্রাম সংকলন করার সময়। ফাইলের আকার সংকলন করে বিশাল পার্থক্য থাকার কোনও কারণ আছে কি? বড় আকারে ডট আমদানি সংকলন ব্যবহার করে।
মাজিদারিফ

@ মজিদারিফ: এটি একটি আকর্ষণীয় পর্যবেক্ষণ :) আপনি কি দয়া করে কোডটির জন্য একটি পৃথক প্রশ্ন পোস্ট করতে পারেন যা সমস্যাটি পুনরুত্পাদন করে? (আমি নিজেকে করতে চেষ্টা করেছি, সঙ্গে একটি সহজ হ্যালো-ওয়ার্ল্ড প্রোগ্রাম কম্পাইল import "fmt"বনাম import . "fmt"কিন্তু উভয় ক্ষেত্রেই এটা আমার জন্য একই আকারের ছিল।)
Attilio

66

পাইথন থেকে আগতদের জন্য এখানে একটি সাদৃশ্য রয়েছে:

  • গোগুলি import "os"মোটামুটি পাইথনের সমতুল্যimport os
  • গোগুলি import . "os"মোটামুটি পাইথনের সমতুল্যfrom os import *

উভয় ভাষায়, পরবর্তীকালে ব্যবহারটি সাধারণত ভ্রান্ত হয় তবে এটি করার পিছনে যথেষ্ট কারণ থাকতে পারে।


4

এটি কেবল পরীক্ষায় ব্যবহার করা উচিত।

গোলংয়ের উইকিতে এখানে কিছু ডকুমেন্টেশন রয়েছে

আপনি এই ধরনের mockgen সঙ্গে কিছু উপহাস কোড তৈরি করে থাকেন এবং এটি আপনার প্যাকেজ কোড আমদানি, এবং তারপর আপনার পরীক্ষার প্যাকেজ এছাড়াও আপনার প্যাকেজ কোড আমদানি, আপনি (সমাধান করতে কিভাবে সিদ্ধান্ত নিতে ব্যবহারকারী যাক কিছু golang তা চয়ন) একটি বৃত্তাকার নির্ভরতা পেতে।

তবে, যদি আপনার পরীক্ষার প্যাকেজের অভ্যন্তরে আপনি যে প্যাকেজটি পরীক্ষা করছেন সেটিতে ডট স্বরলিপি ব্যবহার করেন তবে সেগুলি একই প্যাকেজ হিসাবে বিবেচিত হবে এবং কোনও বৃত্তাকার নির্ভরতা নেই!

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