আমি দেখেছি থেকে এই উদাহরণে sqlite3
উপরGitHub
:
import (
"database/sql"
"fmt"
_ "github.com/mattn/go-sqlite3"
"log"
"os"
)
এবং আমদানির বিবৃতিটির সামনে আন্ডারস্কোরটির অর্থ কী তা খুঁজে পাওয়া যায় না।
আমি দেখেছি থেকে এই উদাহরণে sqlite3
উপরGitHub
:
import (
"database/sql"
"fmt"
_ "github.com/mattn/go-sqlite3"
"log"
"os"
)
এবং আমদানির বিবৃতিটির সামনে আন্ডারস্কোরটির অর্থ কী তা খুঁজে পাওয়া যায় না।
উত্তর:
এটি কেবলমাত্র কোনও পার্শ্ব প্রতিক্রিয়াগুলির জন্য প্যাকেজ আমদানির জন্য।
থেকে যান স্পেসিফিকেশন :
একমাত্র প্যাকেজটি এর পার্শ্ব-প্রতিক্রিয়া (ইনিশিয়ালাইজেশন) এর জন্য আমদানি করতে, ফাঁকা শনাক্তকারীকে সুস্পষ্ট প্যাকেজের নাম হিসাবে ব্যবহার করুন:
আমদানি _ "লিবিব / গণিত"
Go-sqlite3 এর ক্ষেত্রে , আন্ডারস্কোর আমদানি অন্য কোনও ফাংশন আমদানি sqlite3
না করে init()
ফাংশনে ডাটাবেস ড্রাইভার হিসাবে ড্রাইভার নিবন্ধিত করার পার্শ্ব-প্রতিক্রিয়ার জন্য ব্যবহৃত হয়:
sql.Register("sqlite3", &SQLiteDriver{})
একবার এটি এভাবে নিবন্ধিত হয়ে গেলে, sqlite3 উদাহরণের মতো আপনার কোডটিতে স্ট্যান্ডার্ড লাইব্রেরির sql
ইন্টারফেসের সাথে ব্যবহার করা যেতে পারে :
db, err := sql.Open("sqlite3", "./foo.db")
অন্য উত্তরগুলি সম্পূর্ণরূপে বর্ণনা করেছে, "আমাকে কোডটি দেখান" লোকের জন্য, এর মূল অর্থ: প্যাকেজ-স্তরের ভেরিয়েবলগুলি তৈরি করুন এবং init
সেই প্যাকেজের কার্য সম্পাদন করুন।
এবং (যদি থাকে) প্যাকেজ-স্তরের ভেরিয়েবল এবং init
প্যাকেজগুলির ক্রিয়াকলাপগুলির ক্রিয়াকলাপ যা এই প্যাকেজটি আমদানি করে।
প্যাকেজটি কেবলমাত্র বলা না করেই কেবল প্যাকেজ তৈরি করতে পারে তা হ'ল প্যাকেজ-স্তরের ভেরিয়েবলগুলি (পাবলিক বা প্রাইভেট) তৈরি করা এবং এর init
কার্যকারিতাটি।
দ্রষ্টব্য : এমনকি init
ফাংশন করার আগে একটি ফাংশন চালানোর কৌশল আছে trick আমরা প্যাকেজ স্তরের ভেরিয়েবলগুলি সেই ফাংশনটি ব্যবহার করে সেগুলি শুরু করে ব্যবহার করতে পারি।
func theVeryFirstFunction() int {
log.Println("theVeryFirstFunction")
return 6
}
var (
Num = theVeryFirstFunction()
)
func init() { log.Println("init", Num) }
https://golang.org/doc/effective_go.html#blank
এটি হয় কাজ চলছে, বা পার্শ্ব প্রতিক্রিয়া জন্য আমদানি করা। এই ক্ষেত্রে, আমি বিশ্বাস করি এটি পার্শ্ব প্রতিক্রিয়াগুলির জন্য, ডকটিতে বর্ণিত।