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,因此我在下面附上了输出的屏幕截图。
第一个在控制台上打印 hello world 的程序。如果您在 Windows 平台上使用 Visual Studio,则输出屏幕可能与图像中的一样。
到目前为止,我们肯定已经看过这个节目一百万次了,但我们真的了解其中的内容吗?或者我们只是扫描代码中编写的关键字并复制粘贴,然后在我们的程序中进一步实现?答案我们都知道!但是现在让我们尝试理解代码。
package main
此语句使包可用作程序的可执行代码。一个包可以简单地解释为一个胶囊,它将多段代码绑定在一起,这些代码可能包含多个库、多个功能,所有功能都包含在一个胶囊中,用户只需导入或提及该包,就可以在任何程序中轻松使用。
import "fmt"
这里的 fmt 是 Go lang 提供的内置包。所有基本的打印操作、扫描操作等都属于这个包。
func main()
它是保存可执行驱动程序代码的 main函数的简单声明。
fmt.Printf("Hello world!")
在这一行中,它可能看起来很简单,但位于 fmt 和 Printf 之间的简单点 (‘.’) 背后有一个逻辑。点是执行重要搜索的中介。这里点前面的术语是包名,这里点后面的名称是属于点前面提到的包的函数集。 Printf 是位于 fmt 包下的一个函数,它提供“在控制台上一行打印输入字符串(在这种情况下)”。
如前所述,fmt 是一个预先构建的包,由其他人开发。我们在这些预先构建的代码中发现了很多东西,但为什么我们不能尝试构建自己的包呢?好吧,构建我们自己的包可以提高我们工作组织的可读性、可重用性和效率,因为它将针对我们所做的工作而不是世界其他地方!让我们看看如何构建一个简单的新包的演示。
好吧,在您继续之前,您需要确保以下步骤,这些对于确保顺畅的工作流程至关重要:
- 检查环境变量中的 GOPATH 并将其设置为包含所有 Go 文件的目录。
- 使用您要创建的包的名称创建一个新文件夹。
- 在步骤 2 中创建的文件夹中,创建包含要创建的 Go 包代码的 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("******************************************************")
}
好吧,包代码与普通文件代码不同。所以我们的过程并没有到此结束。在包文件中编写代码是第一步。编写代码后,将文件保存为您在第一行代码中提到的包的名称。例如,就我而言:
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函数完全按照编码执行。下面显示了我的包运行的演示以供参考。
这是计算器包代码文件,终端部分是需要执行的命令,输出也显示在上面提到的屏幕截图中。另外,请注意我打开终端的目录以及已执行的命令。
这是导入和执行包的主要代码文件。观察创建包后主文件代码变得多么简单。该包现在可以在任何代码中重复使用一百万次。如果您在云上提供它,那么网络上的任何人都可以使用它。注意终端和目录上的命令,因为它们非常重要。