广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang特有程序结构入门教程
  • 883
分享到

golang特有程序结构入门教程

2024-04-02 19:04:59 883人浏览 薄情痞子
摘要

Go语言的由来 ​ Go语言亦叫Golong语言,是由谷歌Goggle公司推出。Go语言的主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pi

Go语言的由来

​ Go语言亦叫Golong语言,是由谷歌Goggle公司推出。Go语言的主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pike)和罗伯特.格里泽默(Robert Griesemer)。这三个都是大神,稍介绍一下他们的贡献:
​ 肯.汤姆逊(Ken Thompson):图灵奖得主,Uinx发明人,B语言作者(C语言前身),还做飞行员,后来被谷歌挖走。
​ 罗布.派克(Rob Pike):Unix团队和Plan 9操作系统计划的成员,与Ken老爷子共事多年,并共创出广泛使用的UTF-8 字元编码。
​ 罗伯特.格里泽默(Robert Griesemer):曾协助制作Java的HotSpot编译器,和Chrome浏览器的javascript引擎V8。

Go语言的特点

Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发速度和易维护性,有人形容Go语言:Go = C + python , 说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

提示:本系列文章适合对Go有持续冲动的读者

阅前须知:在程序结构这章,更多会关注golang中特有结构,与其他语言如C、python中相似结构(命名、声明、赋值、作用域等)不再赘述。

一、golang类型别名

在go1.9中引入类型别名的特性,其中两个内置类型byteruneuint8int32的别名。类型别名即字面意思换个名字,两者是相同类型。

类型声明语句一般出现在包一级,因此如果新创建的类型名字的首字符大写,则在包外部也可以使用。

解决问题:大规模重构期间启用渐进式代码修复,特别是将类型从一个包移动到另一个包,以便引用旧名称的代码与引用新名称的代码互操作。类型别名对于允许使用单个顶级导出 api 将大型包拆分为多个实现包,以及对现有包的扩展版本进行试验也可能很有用。

定义方法:

type T1 = T2

提案地址:18130-type-alias

二、变量初始化

1.如果初始化表达式被省略,那么将用零值初始化该变量,即如下:

int -->0

bool -->false

string-->""

接口类型:slice、指针、map、chan、函数 -->nil

数组或结构体: 每个元素或字段初始为对应类型零值

零值初始化机制可以确保每个声明的变量总是有一个良好定义的值,这个特性可以减少许多额外工作

2.函数返回值初始化变量,比如err的获取。在赋值语句左边的变量和右边最终的求到的值必须有相同的数据类型。


if err:=Http.Get(addr),err{
	//
}

3.初始化表达式可以是字面量或任意的表达式。在包级别声明的变量会在main入口函数执行前完成初始化,局部变量将在声明语句被执行到的时候完成初始化

4.简短式(:=)局部变量声明只可用于局部变量声明。并且简短变量声明语句对这些已经声明过的变量具有赋值行为。如下第二个声明只声明了out一个变量。


in, err := os.Open(infile)
// ...
out, err := os.Create(outfile)

5.函数内生命的变量必须使用,不过可以使用下划线_ 丢弃。

三、变量生命周期

对于在包一级声明的变量来说,它们的生命周期和整个程序的运行周期是一致的。

而相比之下,局部变量的生命周期则是动态的:每次从创建一个新变量的声明语句开始,直到该变量不再被引用为止,然后变量的存储空间可能被回收。

函数的参数变量和返回值变量都是局部变量。它们在函数每次被调用的时候创建。

四、golang package(包)与golang Module(模块)

1. package:对一组函数或功能的封装,即避免重复造轮子。

在1.12之后版本(引入了module)安装后,会在用户目录下创建一个 go 文件夹作为默认的 GOPATH,go get 会将远程的软件包下载到GOPTH目录下 pkg/mod 里。GOROOT为go文件和安装目录。$GOROOT/src为内置标准库。

GOPATH目录已下载的package

$GOROOT/src目录内置package

在沒有使用 golang module 前导入他人分享的 package 需要先使用 go get 下载到本地,然后才可以通过import引用此 package

2. module:对package进行管理,即管理应用的依赖和package版本。

引入module后项目目录不再只限制在GOPATH/src,你可以在任意文件夹下创建你的项目,再使用go mod init初始化即可。如下初始化一个module为GitHub.com/csgo 在当前文件夹下产生go.mod文件。


[root@VM-0-5-Centos water_man]# ls
go.mod  water_man.go
[root@VM-0-5-centos water_man]# cat go.mod 
module github.com/csgo   //文件名称

go 1.15   //go版本

replace github.com/csgo/rush_b => ../rush_b  //重定向package到../rush_b文件夹下

require github.com/csgo/rush_b v0.0.0-00010101000000-000000000000  //非标准库依赖包和版本

上层目录下自定义的package:

go module会根据 go.mod 的依赖引用关系导入三方包。如果发现本地cache没有,就会从远程拉取。即如果github.com/csgo/rush_b未重定向到本地就会使用 go get 。当 go module下载了远程包后,同时会自动更新 go.mod 。

需要注意自定义的package函数、变量如果需要被外部引用则首字母应大写,即包级别的名字都是以大写字母开头。

到此这篇关于golang特有程序结构入门教程的文章就介绍到这了,更多相关golang程序结构内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: golang特有程序结构入门教程

本文链接: https://www.lsjlt.com/news/127445.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang特有程序结构入门教程
    Go语言的由来 ​ Go语言亦叫Golong语言,是由谷歌Goggle公司推出。Go语言的主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pi...
    99+
    2022-11-12
  • C程序结构的入门
    目录C Hello World 实例编译 & 执行 C 程序在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。 ...
    99+
    2022-11-12
  • golang特有程序结构的示例分析
    这篇文章将为大家详细讲解有关golang特有程序结构的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Go语言的由来Go语言亦叫Golong语言,是由谷歌Goggle公司推出。Go语言的主要开发者有...
    99+
    2023-06-15
  • Go语言七篇入门教程二程序结构与数据类型
    目录1. 程序结构1.1 名称1.2 声明1.3 注释1.4 单双引号1.5 输出2. 数据类型2.1 整型2.2 浮点型2.3 复数2.4 布尔型2.5 字符串2.6 常量2.7 ...
    99+
    2022-11-12
  • MySQL索引数据结构入门详细教程
    目录引言1. 什么是索引2. 索引的数据结构2.1 B+Tree 和 B-Tree2.2 树高问题2.3 什么样的搜索可以用到索引?2.4 使用限制2.5 自适应哈希索引3. 小结引言 之前松哥写过一个 mysql 系列...
    99+
    2023-05-15
    MySQL索引数据结构 MySQL入门教程
  • Linux iptables入门教程总结
    本篇内容介绍了“Linux iptables入门教程总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!链(chain)与规则 (rules)...
    99+
    2023-06-13
  • SQL 入门教程:创建联结(JOIN)
    目录一、WHERE 子句的重要性二、内联结三、联结多个表请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 创建 联结 非常简单,指定要联结的所有表以及关联它们的方式即可。请看下面的例子: 输入▼ SELECT...
    99+
    2015-05-03
    SQL 入门教程:创建联结(JOIN)
  • 通俗易懂的Redis数据结构基础教程(入门)
    目录stringlisthashsetsortedsetRedis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的...
    99+
    2022-11-11
  • Golang中Gin框架的使用入门教程
    目录安装与简单测试常见请求与分组请求获取参数 与 参数合法性验证获得query中参数获得multipart/urlencoded form中的参数模型绑定和参数验证自定义参数验证项目...
    99+
    2022-11-11
  • web前端培训教程中程序的顺序结构及选择结构
    程序的三大结构: 顺序结构 选择结构 循环结构if(){}判断语句if(true){           //执行该语句  &nb...
    99+
    2023-06-05
  • SQL 入门教程:排序(ORDER BY)数据
    目录请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 下面的 SQL 语句返回某个数据库表的单个列。但请看其输出,并没有特定的顺序。 输入▼ SELECT prod_name FROM Products; 输出▼...
    99+
    2019-10-05
    SQL 入门教程:排序(ORDER BY)数据
  • 微信小程序开发实战快速入门教程
    目录注册微信小程序微信开发者工具第一个小程序新建项目项目目录结构目标成果步骤分解页头页尾个人中心生活指南模拟弹窗预览图片注册微信小程序 如果你还没有微信公众平台的账号,请先进入微信公...
    99+
    2022-11-13
  • 微信小程序游戏怎么开发入门教程
    微信小程序游戏开发是现在比较热门的小程序类型开发项目,对于开发人员而言,怎么开发微信小程序游戏呢?今天小编分享一篇小游戏的入门开发教程,希望对微信小程序制作开发人员提供参考。 注册一个小程序账号 在官方注册一个微信小程序账号(注册申请教程)...
    99+
    2023-08-20
    微信小程序 游戏 小程序
  • 好程序员Java教程分享Java 循环结构
    好程序员Java教程分享Java 循环结构,在互联网时代,IT行业飞速发展,Java工程师也随之崛起,薪资待遇较高,已成为众多IT学子就业首选,今天就为大家分享一些Java干货。Java 循环结构 - for, while 及 do...w...
    99+
    2023-06-02
  • Docker 镜像构建保姆级入门示例教程
    目录一、概述二、Dockerfile 结构三、常用 Dockerfile 操作指令1)镜像构建(docker build)2)运行容器测试(docker run)3)ARG4)FRO...
    99+
    2022-11-13
  • JavaScript程序都有什么结构
    小编给大家分享一下JavaScript程序都有什么结构,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-19
  • javascript中程序结构有哪些
    javascript中的程序结构有:1.顺序结构,程序默认的结构;2.分支结构,用于判断给定条件的结构;3.循环结构,在程序中反复执行某个操作的结构;javascript中的程序结构有以下三种顺序结构javascript中顺序结构是程序默认...
    99+
    2022-10-06
  • 制作微信小程序的小白简单入门教程
    目录一、小程序是什么?二、小程序的优势三、知识准备四、开发准备五、 hello world 示例六、WXML 标签语言七、小程序的项目结构八、项目配置文件 app.json小程序已经...
    99+
    2022-12-03
    微信小程序入门教程 微信小程序教程
  • 小程序入门笔记(一) 黑马程序员前端微信小程序开发教程
    微信小程序基本介绍 小程序和普通网页有以下几点区别: 运行环境:小程序可以在手机的操作系统上直接运行,如微信、支付宝等;而普通网页需要在浏览器中打开才能运行。 开发技术:小程序采用前端技术进行开...
    99+
    2023-10-08
    小程序 笔记 前端
  • SQL 入门教程:使用不同类型的联结(JOIN)
    目录一、自联结二、自然联结三、外联结请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 迄今为止,我们使用的只是内联结或等值联结的简单联结。现在来看三种其他联结:自联结(self-join)、自然联结(natural joi...
    99+
    2021-03-25
    SQL 入门教程:使用不同类型的联结(JOIN)
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作