zoukankan      html  css  js  c++  java
  • Golang

    一、Golang基本流程

    1.1 Golang项目管理结构

    一个 go 文件的第一行非注释代码,必须声明该文件属于哪个包。(其实类似于命名空间)
    参考的目录结构:

    Go源代码文件的后缀名为".go"

    1.2 先看一个最简单的例子,Hello World

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Println("hello,世界")
    }
    

    对代码的分析:

    • 语句末尾不要加分号
      每一条Go语句的末尾不要加分号";"!编译器会自动加上,程序猿不要再去做画蛇添足的搞笑事情!
    • package main
      表示该Go文件所在的包是main。在Golang中,每个文件都必须归属于一个包!
    • import "fmt"
      表示引入一个包,包名为"fmt"。引入该包后,就可以使用fmt包中的函数。
    • func main() {}
      func是关键词,表示一个函数;
      main是函数的名称,main代表它是一个主函数、程序的入口;

    1.3 编译源代码

    何为编译?通过编译器将Go源代码编译成机器可以识别的二进制码文件。
    Go源代码必须先编译,才能运行!
    执行 go build 编译,没有程序错误,编译成功是没有任何提示的,只会在当前目录下出现一个可执行文件。
    如果程序有错误,编译时,会在错误的那行报错。

    1.3.1 Windows环境下的编译

    通过 go build 命令,对Go文件进行编译,生成.exe文件(Windows下的可执行文件必须是.exe后缀名)。

    go build hello.go
    


    可以直接运行这个hello.exe文件了:

    注意:从为了方便和偷懒的层面来说,也可以通过 go run 命令直接运行go源文件,类似于直接执行一个脚本文件的形式。
    但在真正的生产环境中,一般是先编译(go build),再运行。而且 go run 命令的底层也是先编译再运行。

    1.3.2 Linux环境下的编译
    // 先切换到go文件所在目录
    
    // 编译
    go build go1.go
    

    编译成功,便会生成一个可执行文件:

    // 在当前目录下执行
    ./go1
    

    上面的命令代表运行当前目录下的go1可执行文件;
    如果不加./,那么就代表去运行系统级/bin目录中的go1可执行文件

    1.3.3 注意事项
    • 可以指定生成的可执行文件名,Windows下的可执行文件的后缀必须是.exe
    1.3.4 小技巧
    • 在Windows下,快速cmd到当前目录
      Windows下,cd命令太操蛋,一次次地cd到目录太麻烦。有两种便捷方式:
      a). 选中路径,输入cmd,回车

      b). shift+鼠标右击
      进入到目录,鼠标移到在空白处,按住shift键+鼠标右击,选择"在此处打开命令窗口(W)"



    二、Golang执行流程

    2.1 对源代码先编译后运行的流程

    2.2 直接go run源代码的流程

    2.3 两个方式的总结

    • 可移植性
      编译后生成的可执行文件,任然可以运行在没有Go开发环境的机器上。
      编译时,编译器会将程序运行所需的依赖库文件、资源同时地编译、链接进可执行文件中去,所以可执行文件的体积相比源代码文件肯定会大很多:

      如果是直接go run源代码文件,那么目标机器上也必须要有Go开发环境,否则无法执行。
    • 运行速度
      明显是先编译再运行的运行速度来得更快,因为编译后已经是个二进制码文件了,可以直接被计算机所执行



    三、Golang开发注意事项

    3.1 Go源代码文件以"go"为扩展名

    注意:Linux系统下也必须手动加上扩展名!
    例如:hello.go

    3.2 Go应用程序的执行入口是main()函数

    3.3 Golang严格区分大小写

    3.4 Go语句后面不要加分号 ;

    Go的编译器会自动加上分号,程序猿自己去写上分号就显得是来搞笑的。

    3.5 不要把多行语句写在同一行

    Go编译器是逐行进行编译,因此程序猿写代码时,一行就写一条语句,不能把多条语句写在同一行,否则就报错!

    3.6 Golang中定义的变量和引入的包必须要被使用,否则报错

    Golang中,定义了一个变量或者引入了一个包,但是没有被使用,那么编译的时候就会报错!
    注意:这与绝大部分的编程语言不一样。例如在Python中,定义了变量或者引入了包,没有使用是不会报错的。但是Golang认为,既然你定义了、引入了,却没有使用,那么你是在耍它,它就会报错!
    归根结底的原因:引入包、定义变量肯定会去申请开辟内存,从而消耗一些计算机资源,并且会占用内存。如果没有使用,Thompson大神认为这是对计算机资源的浪费。干脆在设计Golang时就强制统一了这一风格。



    四、Golang注释类型

    4.1 行注释

    单行注释,两个斜杠://
    官方推荐使用行注释

    4.2 块注释(多行注释)

    多行注释:/**/
    块注释主要用于针对包的详细说明或者屏蔽大块代码
    注意:块注释里面不允许再嵌套块注释



    五、Golang的代码风格

    5.1 格式化代码的方式

    5.1.1 gofmt命令

    格式化一个go源码文件,并且将格式化后的内容写入覆盖原文件。重新打开就可以看到效果!

    gofmt -w xxx.go
    
    5.1.2 利用编辑器的插件

    Goland内建了格式化工具,按快捷键即可格式化当前代码。VS Code需要额外下载插件。

    5.2 注意第一个大括号的位置

    Golang设计者的思想:一个问题尽量只有一个解决方案。在Golang中,第一个大括号必须跟在语句后面,而不能在单独的一行中!

    5.3 一行尽量不要超过80个字符

    预定成俗的约定,并不是强制规定!



    六、Golang调用函数的方式

    1. 引入包
    2. 包名.函数名()
      例如:



    七、Golang转义字符

    转义字符(escape char)

    7.1 常见的转义字符

    第一个斜杠表示转义

    7.1.1

    一个制表位,常用于对齐排版功能

    7.1.2

    换行符

    7.1.3

    回车符, 是不会换行的
    从当前行的顶头开始输出,覆盖掉之前的内容。简而言之: 后面的内容会覆盖掉同一行顶头的内容

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	fmt.Println("what the fuck!
    aaaa")
    }
    

    7.1.4 "

    一个双引号

    7.1.5 \

    要转义斜杠就需要在一个斜杠前面再加上一个斜杠,例如输出路径就需要在斜杠前再加一个斜杠。
    告诉编译器,第一个斜杠是转义,第二个斜杠是输出。示例:fmt.Println("D:\goTest\demo1\main")

    7.2 示例

    一句话输出一定格式的内容:

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	fmt.Println("姓名	年龄	籍贯	住址
    Barry	30	xxxx	Earth")
    }
    

    运行结果:

  • 相关阅读:
    长按功能实现
    html2canvas使用笔记(站在巨人的肩膀上)
    vue项目中实现复制到剪贴板的函数
    python血坑的注意点
    arcgis
    20210815_fastapi_vue看视频整理
    20210804工作总结
    文献中的优秀表达
    利用mxd文档和切片文件发布地图切片服务
    修改mxd文档的数据源并保存为特定版本
  • 原文地址:https://www.cnblogs.com/quanquan616/p/12030463.html
Copyright © 2011-2022 走看看