📌  相关文章
📜  如何在 Golang 中创建自己的包?

📅  最后修改于: 2021-10-25 02:58:19             🧑  作者: Mango

Go 语言是谷歌公司开发的一种高级编程语言。高级语言简单来说就是人类为人类理解而创建的编程语言类别。在我们跳到包、模块、函数等高级术语之前,让我们用 Golang 编写最基本的程序。编程世界中最基本的程序是Hello world

Go
package main
    
import "fmt"
    
// Main function
func main() {
    
    fmt.Printf("Hello World!")
}


Go
package calculator
// I'm creating a simple calculator that
// performs one calculator operation as per the
// user's choice. For readibility of code,
// I named the package as "calculator"
// And remember, the first executable line
// must always be as mentioned above:
// the keyword package followed by a name 
// that you wish to give to your package*
//* indicates very very important
  
import "fmt"
// importing fmt package for basic 
// printing & scan operations
  
func Calc() {
  
    // a simple Calc function that contains 
    // all code within and has no return
    // type mentioned
    // Println prints the input string in new line
    fmt.Println("Welcome to calculator")
    fmt.Println("********************MAIN MENU*************************")
    fmt.Println("1. Add")
    fmt.Println("2. Subtract")
    fmt.Println("3. Multiply")
    fmt.Println("4. Divide")
    fmt.Println("******************************************************")
    var choice int
      
    // choice will store the user's 
    // input as per the menu shown above
    fmt.Scan(&choice)
    var a, b int
      
    // After the choice of operation, user 
    // will be asked to enter 2 int 
    // values one by one to perform 
    // the operation on
    fmt.Println("Enter value of a: ")
    fmt.Scan(&a)
    fmt.Println("Enter value of b: ")
    fmt.Scan(&b)
    if( choice == 1 ){
        // choice 1 activates this part --> addition
        ans := a + b
        fmt.Println("Answer = ", ans)
    } else if( choice == 2 ){
        // choice 2 activates this part --> subtraction
        ans := a - b
        fmt.Println("Answer = ", ans)
    } else if( choice == 3 ){
        // choice 3 activates this part --> multiplication
        ans := a * b
        fmt.Println("Answer = ", ans)
    } else {
        // choice 4 activates this part --> division
        // remember not to enter second value as 0
        // as that would raise a DivideByZero error
        // or may display infinity
        ans := a / b
        fmt.Println("Answer = ", ans)
    }
    fmt.Println("******************************************************")
    fmt.Println("Thank you for using calculator! Have a nice day ahead. ^-^")
    fmt.Println("******************************************************")
}


Go
package main
  
import "myprograms/go-packages/calculator"
// this is the local directory 
// where my package file is located
  
func main() {
    calculator.Calc()
    // name of my package dot name of the 
    // function I wish to execute in that
    // package
}


由于此 IDLE 不支持 Go lang run,因此我在下面附上了输出的屏幕截图。

Golang - 你好世界

第一个在控制台上打印 hello world 的程序。如果您在 Windows 平台上使用 Visual Studio,则输出屏幕可能与图像中的一样。

到目前为止,我们肯定已经看过这个节目一百万次了,但我们真的了解其中的内容吗?或者我们只是扫描代码中编写的关键字并复制粘贴,然后在我们的程序中进一步实现?答案我们都知道!但是现在让我们尝试理解代码。

package main

此语句使包可用作程序的可执行代码。一个包可以简单地解释为一个胶囊,它将多段代码绑定在一起,这些代码可能包含多个库、多个功能,所有功能都包含在一个胶囊中,用户只需导入或提及该包,就可以在任何程序中轻松使用。

import "fmt"

这里的 fmt 是 Go lang 提供的内置包。所有基本的打印操作、扫描操作等都属于这个包。

func main()

它是保存可执行驱动程序代码的 main函数的简单声明。

fmt.Printf("Hello world!")

在这一行中,它可能看起来很简单,但位于 fmt 和 Printf 之间的简单点 (‘.’) 背后有一个逻辑。是执行重要搜索的中介。这里点前面的术语是包名,这里点后面的名称是属于点前面提到的包的函数集Printf 是位于 fmt 包下的一个函数,它提供“在控制台上一行打印输入字符串(在这种情况下)”。

如前所述,fmt 是一个预先构建的包,由其他人开发。我们在这些预先构建的代码中发现了很多东西,但为什么我们不能尝试构建自己的包呢?好吧,构建我们自己的包可以提高我们工作组织的可读性、可重用性和效率,因为它将针对我们所做的工作而不是世界其他地方!让我们看看如何构建一个简单的新包的演示。

好吧,在您继续之前,您需要确保以下步骤,这些对于确保顺畅的工作流程至关重要:

  1. 检查环境变量中的 GOPATH 并将其设置为包含所有 Go 文件的目录。
  2. 使用您要创建的包的名称创建一个新文件夹。
  3. 在步骤 2 中创建的文件夹中,创建包含要创建的 Go 包代码的 go 文件。
  4. 建议您将文件命名为与包名称相同的名称,这不是强制性的,但只是确保减少混乱的导入。
  5. 观看下面的详细演示,了解事情是如何运作的! 🙂

package calculator
// I'm creating a simple calculator that
// performs one calculator operation as per the
// user's choice. For readibility of code,
// I named the package as "calculator"
// And remember, the first executable line
// must always be as mentioned above:
// the keyword package followed by a name 
// that you wish to give to your package*
//* indicates very very important
  
import "fmt"
// importing fmt package for basic 
// printing & scan operations
  
func Calc() {
  
    // a simple Calc function that contains 
    // all code within and has no return
    // type mentioned
    // Println prints the input string in new line
    fmt.Println("Welcome to calculator")
    fmt.Println("********************MAIN MENU*************************")
    fmt.Println("1. Add")
    fmt.Println("2. Subtract")
    fmt.Println("3. Multiply")
    fmt.Println("4. Divide")
    fmt.Println("******************************************************")
    var choice int
      
    // choice will store the user's 
    // input as per the menu shown above
    fmt.Scan(&choice)
    var a, b int
      
    // After the choice of operation, user 
    // will be asked to enter 2 int 
    // values one by one to perform 
    // the operation on
    fmt.Println("Enter value of a: ")
    fmt.Scan(&a)
    fmt.Println("Enter value of b: ")
    fmt.Scan(&b)
    if( choice == 1 ){
        // choice 1 activates this part --> addition
        ans := a + b
        fmt.Println("Answer = ", ans)
    } else if( choice == 2 ){
        // choice 2 activates this part --> subtraction
        ans := a - b
        fmt.Println("Answer = ", ans)
    } else if( choice == 3 ){
        // choice 3 activates this part --> multiplication
        ans := a * b
        fmt.Println("Answer = ", ans)
    } else {
        // choice 4 activates this part --> division
        // remember not to enter second value as 0
        // as that would raise a DivideByZero error
        // or may display infinity
        ans := a / b
        fmt.Println("Answer = ", ans)
    }
    fmt.Println("******************************************************")
    fmt.Println("Thank you for using calculator! Have a nice day ahead. ^-^")
    fmt.Println("******************************************************")
}

好吧,包代码与普通文件代码不同。所以我们的过程并没有到此结束。在包文件中编写代码是第一步。编写代码后,将文件保存为您在第一行代码中提到的包的名称。例如,就我而言:

calculator.go

命名文件后,您需要执行一些重要步骤。由于这是您正在创建的包,因此您将需要 go 编译器来构建和编译您的代码。为此,请转到包文件代码所在的文件夹。在该目录中打开命令提示符。在 cmd 中运行以下命令

go install

此命令将编译您的 Go 包并使其可供使用。现在创建主文件以使用您的第一个包。在这里,我们共享主文件中的代码

package main
  
import "myprograms/go-packages/calculator"
// this is the local directory 
// where my package file is located
  
func main() {
    calculator.Calc()
    // name of my package dot name of the 
    // function I wish to execute in that
    // package
}

保存代码,在主文件所在目录的cmd上执行以下命令
位于——–>“ go build file_name.go

例如:
去构建 main.go

现在您的主文件已成功编译。要执行它,请在您的 cmd 上输入以下命令:
“文件名”

例如:

您会注意到 calc函数完全按照编码执行。下面显示了我的包运行的演示以供参考。

这是计算器包代码文件,终端部分是需要执行的命令,输出也显示在上面提到的屏幕截图中。另外,请注意我打开终端的目录以及已执行的命令。

这是导入和执行包的主要代码文件。观察创建包后主文件代码变得多么简单。该包现在可以在任何代码中重复使用一百万次。如果您在云上提供它,那么网络上的任何人都可以使用它。注意终端和目录上的命令,因为它们非常重要。