zoukankan      html  css  js  c++  java
  • Go从入门到精通——Go语言中程序文件的组织方法

    Go语言中程序文件的组织方法

      Go 语言中,组织程序文件的方式主要是通过结合目录、包(package)与文件来实现的。

      Go 语言的代码文件中,第一行一般都是一个包的名称声明。例如,Hello world!程序中:

    package main
    
    import (
    	"fmt"
    )
    
    func sayHello(s string) string {
    	return "Hello " + s
    
    }
    
    func main() {
    	fmt.Println(sayHello("abc"))
    }
    

      第一条语句 package main 的作用是告诉 Go 语言编译器这个代码属于 main 包。

      在 Go 语言中,名字叫 main 的包是一个特殊的包,表示该包编译后生成一个可执行文件;反过来说,如果要编写一个能够被编译成可执行文件的程序,则代码必须在 main 包中(main包中可以使用其他包)。

      main 包中必须有一个名为 main 的函数(func 开头的一条语句定义了一个名字叫 main 的函数,后面一堆大括号括起来的内容就是这个函数具体的代码),这是程序起始执行的函数。其他名字的包编译后不会生成可执行文件,这些包一般是供其他包来调用的。

    注意:

        与很多其他语言不通,Go 语言中每一条语句不必以分号 ";" 结尾。

      同一个包中可以有多个文件,这可以避免一个太大的代码文件,也可以更清晰地把代码分类组织在不同的文件中。

      同一目录下所有的代码文件只能属于同一个包,如果属于不通的包,编译时会提示有错误。也就是说,属于不同包的文件只能放在不通的目录下。

      main 包中不论有多少文件,其中的 main 函数有且只有一个,否则编译时也会提示有错误。

      下面我们将 Hello world 程序改写成具有两个文件的包,来验证上述内容。

      首先新建一个 packageTest 子目录,并在其中新建两个代码文件,分别命名为 sub.go 和 main.go,其中 sub.go 文件的代码如下:

    package main
    
    import (
    	"fmt"
    )
    
    func hello() {
    	fmt.Println("Hello world!")
    }
    

      sub.go 代码中实际上仅仅定义了一个 hello 函数,作用是输出 "Hello world!"的字样。main.go 中的代码如下:

    package main
    
    func main() {
    	hello()
    }
    

      main.go 中所做的唯一一件事就是调用了 hello 函数。运行程序,无论使用 go run命令执行代码 main.go 还是 sub.go,都会提示有错误而不得不到想要的输出结果。这时候,需要在 go run 命令后带上所有的源代码作为参数才能够得到正确的执行结果,即执行 go run main.go sub.go 命令,如下:

      Go 语言中程序文件的组可以简单的概括如下:

    • Go 语言中,程序文件主要是按目录和包来组织的。
    • 每个包对应一个目录。
    • 每个包可以有多个代码文件。
    • 可执行包必须以 main 命名,其中应有且只能有一个 main 函数;一般的可执行程序都对应在一个目录下的 main 包,编译程序时将主要编译该包。
    • 可执行包生成的可执行文件是以目录名来命名的,生成的可执行文件的位置根据编译所用的命令不同有所不同,go build 命令将可执行文件生成在与代码文件名相同的目录下,go install 命令将可执行文件生成在 bin 目录下。
  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/zuoyang/p/15189928.html
Copyright © 2011-2022 走看看