• 三、Go语言基础结构解析


    本系列文章均为学习过程中记录的笔记,欢迎和我一起来学习Go语言。

    全文使用环境如下:

    • Go语言版本:1.14
    • 操作系统:deepin
    • 使用工具:Goland开发工具

    本篇我们进行学习Go语言项目基础结构

    我们在上一节时编写了第一个Hello World
    image.png
    这块代码我们从上向下来看。
    第一行是package main,这里是指的包的概念,在go语言中包是代表这个文件夹中所有go代码的目录,这里是main,在Go语言程序中一个可独立执行的程序必须需要有mian这个包,即package main是我们整个程序的入口。而我们日常编写时会新建各种各样用途的go文件,我们通常使用不同的文件夹来区分,这时不同文件夹中的文件我们统一采用一种包的命名方式,便于我们在其他地方使用。详细使用方式将在后续的代码编写过程中详细讲解。

    包的命名规范

    在我们日常编写包名时应使用简洁、富有含义的名称,例如我们这是一个工具包,则使用package util

    导入其他包

    继续向下看代码,我们可以看到

    import (
    	"fmt"
    	"net/http"
    )
    

    这里是导入操作,导入我们在当前go文件中使用的所有包,在go语言初期时我们在导入这些包时需要先将其下载到本地,而现在1.14版本中module功能已基本稳定,我们可以在这里直接使用。有一些跑题,module后续我们也会讲到。
    回归主题,在import的括号中我们看到里面包含了两个包,第一个fmt包是我们使用的打印包,属于官方包,第二个是net/http包,是用于http服务器搭建使用的包,同样属于官方包。当然我们还会使用一些其他第三方的包,例如:“"google.golang.org/grpc"”
    这里我们是导入两个以上的包,我们需要使用(),在我们日常使用时,如果只导入一个包,我们可以直接写

    import "fmt"
    

    注意,在Go语言语法中,括号永远都是在代码后面,而不能换行到新的一行,如果括号在下面,在程序编译时Go会在括号上面的一行代码结尾处追加英文分号“;”作为本行结束。

    函数声明

    下面进入我们的main函数,这里是main包的主入口函数,在我们启动Go语言编写的一个二进制程序时程序会根据main函数进行程序执行,这里需要讲一下,每个go文件中还有一个init函数,这个函数是第一个执行的,后续在编写示例时我们会讲到。

    func main() {
    	//打印
    	fmt.Println("Hello World")
    	/*搭建一个http服务,实现基础打印*/
    	//指定当前目录为根目录
    	http.Handle("/", http.FileServer(http.Dir(".")))
    	http.HandleFunc("/hello", helloWorld)
    	//使用端口8080作为服务监控端口
    	http.ListenAndServe(":8080", nil)
    }
    

    每个函数使用 func 关键词来声明当前是一个函数,mian是函数名,()是参数,{}中的内容是函数体。
    函数命名时需要注意,如果首字母是大写,则它是一个公共函数,即他人都可以使用,如果是一个小写,则表示是一个私有函数,只能在本包中使用。
    上面函数体中我们可以看到fmt.Println("Hello World")作为打印语句,使用了fmt包中的Println函数,参数是"Hello World",首先我们上面引入了fmt包,这里在使用时就需要fmt开头,让程序知道我们要使用这个包了,Println函数的P首字母是大写,因此我们这里可以直接使用到这个函数,而查看源码得知,参数可以任意多个,我们这里传入了一个参数,执行后,控制台打印了Hello World。
    这时有小伙伴问了,我不想用fmt开头怎么办?
    Go语言已经设计好了,如果我们使用其他名字时只需要在引入包时起一个别名即可

    import aa "fmt"
    

    这里我们就可以使用aa.Println("Hello World")作为打印语句
    注意:在go语言中严格要求了import的导入行为,如果我们在go文件中没有使用到的包被导入了,默认是会报错的,因此我们还是使用什么导入什么吧,别贪图一时方便各种导入。

    在包的导入这里还有很多其他的使用方式,我们会再后续的代码编写过程中逐渐进行使用,具体使用时再做详细讲解。

    本次基础结构解析我们先讲到这里,下一篇我们会讲解在Go语言中的数据类型都有哪些。

    本文声明:

    知识共享许可协议
    本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

    文章中凡是涉及的代码均在Gitee与GitHub上了,有需要的可以通过下面的地址下载。

  • 相关阅读:
    CDialogConfigStringRecord+CDialogConfigManage 如何保存listbox中未显示的信息
    vs2010 打开 vs2005 工程报错
    优秀程序员的两大要素:懒 + 笨
    架构设计中的方法学(四)
    程序员应该具备的素质汇总(逐步总结)(转)
    架构设计中的方法学(三)
    成都中青旅欢迎你
    游洪崖洞有感
    架构设计中的方法学(七)
    架构设计中的方法学(二)
  • 原文地址:https://www.cnblogs.com/cnhuashao/p/12798197.html
Copyright © 2020-2023  润新知