【Go 语言教程】Go语言结构

作者: 万能的华哥Dean | 来源:发表于2019-02-20 21:22 被阅读47次

学习一门编程语言,除了学习语法,词法,以及写法等和编译器有关的特性(就是什么是语法错误)之外,需要对这个语言的结构有个清晰的认识,其中包括代码目录结构,源码文件,以及代码结构组织等。那么Go语言结构在目录结构,源码文件,以及代码结构组织方面都是什么样子的呢。

1 目录和源码

首先我门看目录和源码,从之前的Go 语言教程我们知道,Go语言有工程目录,和GOPATH环境变量对应,工程目录结构有

  • bin 存放编译后的可执行文件
  • src 存放实现源码,go get工具获取的web上的模块包都会放到这个目录下,并有对应的目录结构
  • pkg 存放编译后的库文件(分不同平台)
    Go语言的源码文件格式为.go格式。如hello.go, main.go 。

2 包管理

区别于C/C++,Go语言有包的概念,关键字package。Go语言的包管理主要有两种类型的包:main包和正常的模块化的包,模块包。

  • main包,即是包含主函数入口main方法的包
  • 模块包,即是业务模块的划分为不同的业务后定义的包
    包的定义声明:
    都是统一的,在Go源码文件(.go文件)使用package进行声明,以下声明一个名字为package_name的包
    模块包声明
    package package_name

main包声明

package main

包的引入和使用

import "package_name"

或者下面写法

import (
    "package_name"
)

3 包的代码结构

Go语言的结构,即main包和模块包的源文件代码结构,如下例子
模块包代码结构

// hello包定义和声明
package hello 

// 引入模块包
import(
    "fmt"
)
// 变量的定义
const helloworldString string = "Hello world, this is package hello"

// HelloWorld方法定义
func HelloWorld() {
    // 使用包fmt进行打印输出到终端
    fmt.Println(helloworldString)
}

main包代码结构

// 包定义声明
package main

// 引入包
import(
    "fmt"
    "hello"
)

// 程序入口方法
func main() {
    // 引入fmt包并使用
    fmt.Println("Helloworld,你好世界")
    
    // 使用自定义包
    hello.HelloWorld()  
}

Go 语言的代码结构主要包括以下方面:

  • 包的声明和定义
  • 包的引入和使用
  • 模块和方法的定义和使用
  • 程序的入口main方法的定义
  • 变量定义声明和使用
  • 语句
  • 表达式
  • 注释
    每个模块包的目录结构为:
  • $GOPATH/src/helloworld/hello.go
  • $GOPATH/src/helloworld/world.go
  • $GOPATH/src/helloworld/helloworld.go
    ......
    每个包在目录结构中以目录树的方式进行划分,在包的引入时候需要带上从src往下的目录名字连成的目录结构串,如/github.com/log/xxxx。
import "github.com/log/xxx"

包目录下可以有多个源码文件(.go),但是要求所有文件的头部都是一致的包声明(package xxxx)。
整个项目要求只能有一个main包和main入口方法。

4 补充说明

文中讲到“程序入口方法main”,对于各种流行的语言,都会有main方法作为入口方法之说。入口方法其实代表的是一个程序执行的开始。当然在Go 语言中还有init方法的特性,init方法是Go编译器特殊处理的,自动调用的方法。不需要代码显式调用。语法和词法,可以参考大学计算机学科学习的《编译器原理》对其加深学习。

关于本专栏——Go 语言教程,专栏致力于为希望可以系统地,一条一条地,一步一步的学习Go语言的朋友提供一个可以持续阅读的地方,当然也希望可以通过我的实践经验以及相应的基础,可以给你一些学习之外的想法和总结,以及提高。如果真的有帮助,哪怕一点点,可以把这个一点点的提高分享给我,欢迎跟我勾搭联系。

相关文章

  • 【Go 语言教程】Go语言结构

    学习一门编程语言,除了学习语法,词法,以及写法等和编译器有关的特性(就是什么是语法错误)之外,需要对这个语言的结构...

  • 初识Go语言

    Go 语言结构 初识Go语言 Go 语言结构 代码说明: ① 定义包名,必须在源文件中非注释的第一行指明这个文件...

  • go语言学习资料

    菜鸟教程-Go 语言教程 https://www.runoob.com/go/go-tutorial.html老男...

  • 潍坊go语言培训

    潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍...

  • A Tour of Go - Go语言之旅

    Hello,世界 这是Go语言官方的一个简明入门教程,可以帮助我们快速入门Go语言:Go语言之旅[https://...

  • 01 Go极简教程 目录

    极简教程的初衷是给已有其他语言基础的人阅读尽可能少的内容学习Go语言 Go极简教程 目录 Go极简教程 环境安装及...

  • Go语言探索 - 10(原创)

    上一篇文章主要学习了Go语言的结构体以及结构体指针,本篇文章主要学习Go语言的切片以及Map。 Go语言数组的长度...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • Go语言结构+目录+源码=Go语言教程

    1 目录和源码 首先我门看目录和源码,从之前的Go 语言教程我们知道,Go语言有工程目录,和GOPATH环境变量对...

  • golang继承与接口

    继承 结构体 Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继 承...

网友评论

    本文标题:【Go 语言教程】Go语言结构

    本文链接:https://www.haomeiwen.com/subject/cvhhyqtx.html