[Go]-Go语言第一课

这篇具有很好参考价值的文章主要介绍了[Go]-Go语言第一课。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1-1 Go语言特点

特点:
1. 静态类型,编译开源语言

2. 脚本化的语法,支持多种编程范式(函数式,面向对象)

3. 原生,给力的并发支持并发编程

1-2 Go语言优势与劣势

Go语言的优势:
1.脚本化的语法;开发效率高,容易上手

2.静态类型+编译型,程序运行速度有保障;静态类型+编译型语言相对于动态类型+解释型语言的效率高

3.原生的支持并发编程;降低开发、维护成本/程序可以更好的执行

Go语言的劣势:
1.语法糖并没有Python和Ruby多;

2.目前的程序运行速度还不及C;比C++、java快

3.第三方函数库暂时不像绝对主流的编程语言那样多;

1-3 Linux下的安装

win & mac
下载安装包安装即可

Linux
1. wget https://go.dev/dl/go1.20.4.linux-arm64.tar.gz
2. tar -zxf go1.20.4.linux-arm64.tar.gz -C /usr/local

1-4 Linux下的环境变量

vim /etc/profile
#当前安装目录
export GOROOT=/usr/local/go

#工作区的集合
export GOPATH=~/golib:~/goproject

#可执行文件的目录
export GOBIN=~/gobin

export PATH=$PATH:$GOROOT/bin:$GOBIN

source /etc/profile

go version

2-1 Go语言-工作区和GOPATH

工作区是放置Go源码文件的目录;一般情况下,Go源码文件都需要存放到工作区中;但是对于命令源码文件来说,这不是必须的。

每一个工作区的结构都类似下图所示:/home/hypermind/golib:     src/    pkg/   bin/
   
src目录用于存放源码文件;以代码包为组织形式
   
pkg目录用于存放归档文件(名称以.a为后缀的文件)  所有归档文件都会被存放到该目录下的平台相关目录中,用样以代码包为组织形式
   
平台相关目录:两个隐含的Go语言环境变量:GOOS(操作系统)和GOARCH(计算机架构)。以$GOOS_$GOPATH为命名方式,如:linux_amd64
      
<工作区目录>/pkg/<平台相关目录>/<一级代码包>/<二级代码包>/<末级代码包>.a
      
bin目录:用于存放当前工作区中的Go程序的可执行文件
   
1.当环境变量GOBIN已有效设置时,该目录会变的无意义;
2.当GOPATH的值中包含多个工作区的路径时,必须设置GOBIN,否则无法成功安装Go程序的可执行文件

2-2 Go语言-源码文件的分类和含义

Go源码文件:名称以.go为后缀,内容以Go语言代码组织的文件 多个Go源码文件是需要用代码包组织起来的

源码文件分为三类:命令源码文件、库源码文件(go语言程序) 测试源码文件(辅助源码文件)

命令源码文件:声明自己属于main代码包、包含无参数声明和结果声明的main函数;被安装后,相应的可执行文件会被存放到GOBIN指向的目录或<当前工作区目录>/bin下
命令源码文件是Go程序的入口,但不建议把程序都写在一个文件中;同一个代码包中强烈不建议直接包含多个命令源码文件。

库源码文件:不具备命令源码文件的那两个特征的源码文件, 被安装后,相应的归档文件会被存放到<当前工作区目录>/pkg/<平台相关目录>下

测试源码文件:不具备命令源码文件的那两个特征的源码文件。名称以_test.go为后缀。其中至少有一个函数的名称以Test或Benchmark为前缀。并且,该函数接受一个类型为
*testing.T或*testing.B的参数

func TestFind(t *testing.T){//省略若干条语句} 
func BenchmarkFind(b *testing.B){//省略若干条语句}

2-3&4 Go语言-代码包的相关知识

代码包的作用:编译和归档Go程序的最基本单位。代码划分、集结和依赖的有效组织形式,也是权限控制的辅助手段
   代码包的规则:一个代码包实际上就是一个由导入路径代表的目录;导入路径即<工作区目录>/src或<工作区目录>/pkg/<平台相关目录>之下的某段子路径
               例如:代码包hypermind.cn可以对应于/home/hypermind/golib/src/hypermind.cn目录。(其中 /home/hypermind/golib是一个工作区目录)
   代码包的声明:每个源码文件必须声明其所属的代码包;同一个代码包中的所有源码文件声明的代码包应该是相同的。
   代码包声明与代码包导入路径的区别:
       代码包声明:代码包声明语句中的包名称应该是该代码包的导入路径的最右子路径,例如:hypermind.cn/pkgtool           package pkgtool
       代码包导入语句中使用的包名称应该与其导入路径一致,例如:  flag   fmt  strings    import("flag" "fmt" "strings")
       代码包的导入方法:带别名的导入:import str "strings"   str.HasPrefix("abc","a")
                       本地化的导入:import ."strings"  HasPrefix("abc","a")
                       仅仅初始化:import _"strings"    仅执行代码包中的初始化函数
                       

代码包初始化函数:无参数声明和结果声明的init函数

init函数可以被声明在任何文件中,且可以有多个

init函数的执行时机——单一代码包内

1对所有全局变量进行求值  2执行所有init函数

如果在不同对代码包内

1执行被导入对代码包中对init函数  2执行导入它对那个代码包对init函数

导入顺序  A——B——C 执行顺序 C——B——A

init函数肯定在main函数之前先执行,每一个init函数都只会执行一次

3-1 go run 命令简介

go run命令:
用于运行命令源码文件
只能接受一个命令源码文件以及若干个库源码文件作为文件参数

[Go]-Go语言第一课

goc2p项目地址:https://github.com/hyper-carrot/goc2p

用go编写了ds和pds,用以打印目录结构

3-4 go run 常用标记的使用

-v:列出被编译的代码包的名称
-work: 显示编译时创建的临时工作目录的路径,并且不删除它
-x: 打印编译过程中所需运行的命令

-n;打印编译过程中所需的命令,但并不执行
-x:打印编译过程中所需的命令,并执行他们。

3-6 go build 命令简介

go build 简介(1)

用于编译源码文件或代码包

编译非命令源码文件不会产生任何结果文件

编译命令源码文件会在该命令的执行目录中生成一个可执行文件

Go build 简介(2)

执行该命令且不追加任何参数时,它会试图把当前目录作为代码包并编译

执行该命令且以代码包的导入路径作为参数时,该代码包及其依赖会被编译

执行该命令且以若干源码文件作为参数时,只有这些文件会被编译

3-8 go install 命令简介

go Install 简介(1)

用于编译并安装代码包或源码文件

安装代码包会在当前工作区的 pkg/<平台相关目录> 下生成归档文件

安装命令源码文件会在当前工作区的 bin 目录或 $GOBIN 目录下生成可执行文件

go install 简介(2)

执行该命令且不追加任何参数时,它会试图把当前目录作为代码包并安装

执行该命令且以代码包的导入路径作为参数时,该代码包及其依赖会被安装

执行该命令且以命令源码文件及相关库源码文件作为参数时,只有这些文件会被编译并安装

3-10 go get 命令简介

go get
用于从远程代码仓库(如GitHub)上下载并安装代码包

受支持的代码版本控制系统有:Git Mercurial(hg) SVN Bazaar

指定的代码包会被下载到$GOPATH中包含的第一个工作区的src目录中

3-12 go get 常用标记的使用

go get:

-d : 只执行下载动作, 不执行安装动作

-fix :在下载代码包后先执行修正动作,而后再进行编译和安装

-u : 利用网络来更新已有的代码包及其依赖包

go命令教程:https://github.com/hyper-carrot/go_command_tutorial

4-1 程序实体与关键字

[Go]-Go语言第一课文章来源地址https://www.toymoban.com/news/detail-493622.html

到了这里,关于[Go]-Go语言第一课的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Go 语言第一课》课程学习笔记(五)

    Go 语言中有一个特殊的函数:main 包中的 main 函数,也就是 main.main,它是所有 Go 可执行程序的用户层执行逻辑的入口函数。 Go 程序在用户层面的执行逻辑,会在这个函数内按照它的调用顺序展开。 main 函数的函数原型非常简单,没有参数也没有返回值。 Go 语言要求:可执行

    2024年02月12日
    浏览(31)
  • 《Go 语言第一课》课程学习笔记(九)

    Go 语言在常量方面的创新包括下面这几点: 支持无类型常量; 支持隐式自动转型; 可用于实现枚举。 Go 语言的常量是一种在源码编译期间被创建的语法元素。这是在说这个元素的值可以像变量那样被初始化,但它的初始化表达式必须是在编译期间可以求出值来的。 Go 常量

    2024年02月12日
    浏览(30)
  • 《Go 语言第一课》课程学习笔记(二)

    在 Go 语言中编写一个可以打印出“hello,world”的示例程序,我们只需要简单两步,一是创建文件夹,二是开始编写和运行。 通常来说,Go 不会限制我们存储代码的位置,建议创建一个可以集合所有项目的根文件夹(比如:~/goprojects),然后将所有的项目都放在里面。 对于

    2024年02月12日
    浏览(30)
  • 第一课-C 语言,IDE, 编译器

    C/C++ 语言的优势:  语法简单结构紧凑;  - 32个,9种控制语句  代码书写灵活;  有丰富多样的运算符;- 34个运算符  有丰富的数据结构;  几乎是现在计算机语言的鼻祖。  指令,指令集,程序    按是否强制类型分类:     强类型语言(必须指明变量类型) c c++   

    2023年04月08日
    浏览(27)
  • 理解SpringIOC和DI第一课(Spring的特点),IOC对应五大注解,ApplicationContext vs BeanFactory

    对象这个词在Spring范围内,称为bean Spring两大核心思想 1.IOC     (IOC是控制反转,意思是 控制权反转-控制权(正常是谁用这个对象,谁去创建,)-控制对象的控制权,反转的意思是创建对象的控制权,交给了Spring) 优点:解耦合 高内聚:一个模块内部的关系 低耦合:各个模

    2024年02月04日
    浏览(33)
  • zookeeper第一课-Zookeeper特性与节点数据类型详解

    ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分布式集群中应用系统的一致性问题。 Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

    2024年02月13日
    浏览(38)
  • python第一课:如何学好一门语言

    1)了解编程语言的特性和历史 2)了解编程语言的基本语法 3)选择开发工具并实现第一个程序 4)选择一个编程手册,便于查阅 5)选择一个流行的开源框架,并掌握 6)不断实践,并养成阅读技术博客的习惯 1:了解编程语言的特性与发展历史 Python是一种通用的高级编程语

    2024年01月18日
    浏览(33)
  • HarmonyOS第一课ArkTS开发语言(TypeScript快速入门)

    ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS,我们首先要了解下ArkTS、TypeScript和JavaScript之间的关系: JavaScript是一种属

    2024年02月05日
    浏览(29)
  • 复习第一课 C语言-ubuntu下的命令

    目录 linux命令 【1】打开关闭终端 【2】终端 【3】ls命令 【4】cd 切换路径 【5】新建 【6】删除 【7】复制 【8】移动 【9】常用快捷键 【10】vi编辑器 【11】简单编程步骤 任务: 【1】打开关闭终端 打开终端: 1. 直接点击 2. ctrl alt t : 在家目录下打开终端 3. ctrl shift n :在当前

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包