Go语言基础(一)

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

本文档参考golang官方文档以及一些教程书籍,若文档有错误,欢迎issue 🤗

  1. https://go.dev/doc/tutorial/
  2. 参考书籍《Go语言开发实战》

Go语言是Google公司发布的一种静态型、编译型的开源编程语言,是新时代的C语言。Go语言已经成为云计算时代的重要基础编程语言。

2012年3月28日,Go发布第一个正式的稳定版本。

2. Go语言的特性

自由高校

  1. 编译效率优于 java C++
  2. 运行效率接近 C
  3. 开发效率接近 PHP
  4. Go语言支持所有编程范式:过程式编程,面向对象编程,面向接口编程,函数式编程

强大的标准库

  1. 标准库涵盖 网络 系统 加密编码 图形。
  2. 网络和系统的库非常实用,几乎不需要依赖第三方库

部署方便

  1. Go语言不使用虚拟机, Go语言的代码可以直接输出为 目标平台的二进制可执行文件。
  2. Go语言拥有自己的链接器,不依赖任何系统提供的编译器和链接器。
  3. 编译出来的二进制可执行文件几乎可以运行在任何平台上

原生支持并发

  1. Go语言的并发基于 Go routine
  2. Go routine 类似于线程,但是并非线程。是Go面向线程的轻量级方法。
  3. 创建 Go routine的成本很低,只需要几千个字节的额外内存。
  4. Go routine 之间可以通过channel实现通信,基于channel的并发方法可以最大限度地使用CPU资源。

稳定性强

  1. Go有编译检查,严格的编码规范,强稳定性。
  2. Go 提供了软件生命周期(开发,测试,部署,维护)的各个环节工具。go tool、 go fmt, go test。

垃圾回收

  1. Go语言内置runtime来自动进行管理

    🐛目前来说,GC并不完美,但是足以应付开发者遇到的大多数情况,Go语言允许开发者对词项工作进行优化。

3. Go使用范围

  1. Go语言可以代替C 或者 C++做一些系统编程,如:日志处理,数据打包,虚拟机处理,文件系统。
  2. 网络编程方面,包括Web应用,API应用,下载应用。
  3. 知名开源项目:分布式系统中的Etcd, google的Groupcache数据库组件,云平台中的Docker和Kubernets,区块链中的Ethereum和Hyperledger.

4. Go语言的编码规范

Go语言的结构组成, 以下面的结构为例:

package main // 定义了包名
import "fmt" //导入依赖包, fmt包实现了格式话输入输出
func main(){ // 程序入口
    fmt.printIn("Hello")
}

每一个Go应用程序都需要包含一个名为main的包,并且该包包含一个main()的函数,该函数是 go可执行程序的入口函数,即不能带有参数,也不能带有返回值。

⚠️需要注意的点:

  1. 只有package名为main的包可以包含main()函数
  2. 一个可执行程序有且只有一个main()函数
  3. 通过import关键子来导入其他非main()
  4. import关键字可以单个导入,也可以多个导入

在Go语言中,换行代表一个语句结束,Go语言不需要像java一样以分号结尾。

如果多个语句写在同一行,这些语句必须使用分号隔开,实际开发中不鼓励这样做

5. Go的标识符

标识符号分为:

  1. 预定义标识符,系统已经定义好的一些系统实体名称,比如 nil代表空
  2. 自定义标识符,指用户给变量,类型,函数等程序实体起名字
表1 Go语言预定义的标识符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qtjXbjuO-1665143573703)(…/.image/image-20220925184820689.png)]

  1. 类型之后的数字代表bit的位数。如int16代表 这个类型占16个bit, 共2字节。

  2. uint 标识 unsinged int 代表无符号整数

  3. 布尔类型无法参与数值运算,也无法与其他类型进行转换。

标识符可见性规则:Go语言中,使用大小写来决定标识符是否可以被外部包所调用。

  • 如果标识符以一个大写字母开头,那么这个标识符代表的对象对外部包是可见的。
  • 如果标识符以小写字母开头,则对外部包是不可见的
表2 关键字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xy4MvDbc-1665143573704)(…/.image/image-20220925185224349.png)]

6. 补充

GoLand快捷键

快捷键 说明
Ctrl + J 快速提示
Ctrl + Shift + ↑ ↓ 上下移动行的内容
Alt + ← → 文件编辑窗口切换
Alt + ↑ ↓ 光标在相邻函数跳转
Ctrl + D 向下复制行内容
Ctrl + Y 删除当前行
Ctrl + Alt + L 格式化代码

Go环境配置的相关变量

  • GOROOT: Go的安装路径
  • GOPATH: Go的工程路径, 工程目录 用来存放开发者的代码,该环境变量被指定之后,编译源代码所生成的文件都会放到此目录下。GOPATH主要有三个目录:
    1. bin: 存放可执行文件
    2. pkg: 存放编译好的库文件
    3. src: 存放go的源代码。

通过 go env查看go语言环境配置文章来源地址https://www.toymoban.com/news/detail-458065.html

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

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

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

相关文章

  • Go语言基础之切片

    切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合 声明切片类型的基本语法如下: 其中, name:表示变

    2024年02月11日
    浏览(47)
  • Go语言基础快速上手

    Go中没有明确意思上的 enum (枚举)定义,不过可以借用 iota 标识符实现一组自增常亮值来实现枚举类型。 切片(slice) 本身不是动态数组或动态指针。只是它内部采用数组存储数据,当数组长度达到数组容量时,会进行 动态扩容 。 大白话就是切片功能和Java中的List集合类似,

    2024年01月20日
    浏览(35)
  • go语言基础操作---七

    什么是Socket Socket,英文含义是【插座、插孔】,一般称之为套接字,用于描述IP地址和端口。可以实现不同程序间的数据通信。 Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open – 读写write/read – 关闭close”模式来操作。Socket就是该模式的一个实

    2024年02月09日
    浏览(30)
  • Go语言基础之函数

    Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func,具体格式如下: 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见

    2024年02月11日
    浏览(31)
  • 【GO语言基础】控制流

    【Go语言学习】ide安装与配置 【GO语言基础】前言 【GO语言基础】变量常量 【GO语言基础】数据类型 【GO语言基础】控制流 if结构 if 语句:用于根据条件执行代码块 if else结构 else 语句:与 if 语句一起使用,当 if 的条件不满足时执行。 1.if str == “” 2.len(str)==0 switch 语句:用

    2024年02月09日
    浏览(27)
  • Go语言基础-if语句

      原文链接:  https://www.fearlazy.com/index.php/post/288.html   在目前接触的几种语言中条件语句都是必不可少的。很难想象没有条件语句要怎么写程序。   1.if语句 Go语言的条件语句和C++的很像,使用if。 其格式如下: if 表达式为true {    执行语句 } 和C++的区别是条件表达式

    2023年04月08日
    浏览(59)
  • 2.go语言基础类型漫游

    目录 本篇前瞻 Leetcode习题9 题目描述 原题解析 代码编写 有符号整形 基本数据类型 整形 有符号整形 无符号整形 浮点型 布尔型 字符 本篇小结 下一篇预告 欢迎来go语言的基础篇,这里会帮你梳理一下go语言的基本类型,注意本篇有参考go圣经,如果你有完整学习的需求可以看

    2024年02月12日
    浏览(31)
  • Go语言基础之map

    Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map定义 Go语言中 map的定义语法如下: 其中, KeyType:表示键的类型。 ValueType:表示键对应的值的类型。 map类型的变量

    2024年02月11日
    浏览(41)
  • Go语言基础之结构体

    Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type来定

    2024年02月10日
    浏览(35)
  • 小白学Go基础01-Go 语言的介绍

    Go 语言对传统的面向对象开发进行了重新思考,并且提供了更高效的复用代码的手段。Go 语言还让用户能更高效地利用昂贵服务器上的所有核心,而且它编译大型项目的速度也很快。 Go 语言开发团队花了很长时间来解决当今软件开发人员面对的问题。开发人员在为项目选择语

    2024年02月10日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包