go 基本知识点备忘

原站地址:Go 语言教程 | 菜鸟教程

本文目的: 精简方式记录最重要的知识点,方便快速复习

一、基本语法

1. GO语言特点:高效,并行,开源,搭载Web服务器

2. 执行命令: go run hello.go

3. 编译命令: go build hello.go

4. 包声明: package main

5. 引入包: import "fmt"

6. 每行不需要分号结束;但一行多个语句的话,需要分号。

7. 声明变量方式一:用关键字 var,名字在前,类型在后。var b, c int = 1, 2

8. 声明变量方式二:a := 1, 相当于var a int = 1

9. 变量没有初始化,默认值分别是:0,false,"",nil (指针、切片,map)

10. 局部变量声明后不使用,会报错。但全局变量可以声明后不使用。

11. 交换两个变量的值:a, b = b, a

12. 并行复制可以用于函数返回,比如:val, err = Func1(var1)。

13. 可以通过 &i 来获取变量 i 的内存地址

14. 数据类型:

(1) 常规类型:bool,int,float32,,float64,string

(2) 派生类型:指针,数组,struct,Channel,函数,切片,接口,Map

(3) 其他类型:字节(byte),字符(rune), 无符号整型(uintptr)用于存放一个指针

15. 定义常量:const LENGTH int = 10

16. 定义枚举:(也是用的常量const关键字)

const (Female = 1Male = 2
)

17. 特殊常量 itoa,在 const关键字出现时初始值是 0, 每新增一行常量声明将使 iota 计数一次. 且不受直接赋值操作的影响。

const (a = iota   //0b          //1f = 100    //iota +=1i          //3)

18. 枚举的每一行的运算规则,跟随上一行。比如下图, g跟随f,继续是100

const (a = iota   //0b          //1f = 100    g          //100h = iota   //4,恢复计数i          //5)

19. 常量可以用len(), cap() 等 内置函数 计算表达式的值,但必须是内置函数。

20. 特殊运算符: <<左移, >>右移,^异或,&返回指针地址,*声明是指针

二、条件、循环语句

1.  包含: if, else if, else, switch case, select case

2.  switch case : 

switch var1 {case a:...case b:...default:...
}

(1) a 和 b 必须是相同数据类型, 但不被局限于常量或整数,可以是表达式。

(2) 从上至下逐一测试,直到匹配为止

(3) case 最后自带 break 语句,如果需要执行后面的 case,可以使用 fallthrough 

3. select case:

select {case <- channel1:// 执行的代码case value := <- channel2:// 执行的代码case channel3 <- value:// 执行的代码default:// 所有通道都没有准备好,执行的代码
}

(1) 只能用于通道操作,要么是发送要么是接收

(2) 会监听所有通道,其中一个准备好就会执行相应的代码块。

(3) 多个通道都准备好,会随机选择一个通道执行。

(4) 所有通道都没有准备好,会执行 default 的代码。如果没有 default 子句,select 将阻塞,直到某个通道可以运行

4. for 语句:有 4 种形式

(1) for init; condition; post { }   和 C 语言的 for 一样

(2) for condition { } 和 C 的 while 一样

(3) for { }  无限循环

(4) For-each range 循环:可以对字符串、数组、切片等迭代输出元素,获得索引和值

strings := []string{"google", "runoob"}
for i, s := range strings {fmt.Println(i, s)
}

如果是map的话,可以获得 key 和value

ap1 := make(map[int]float32)
map1[1] = 1.0
map1[2] = 2.0
for key, value := range map1 {fmt.Printf("key is: %d - value is: %f\n", key, value)
}

三、结构体、切片

1. 声明结构体: type x struct

type Books struct {title stringauthor string
}

2. 定义结构体: Books{"Go 语言", "www.runoob.com"}

3. 声明切片: var varname [] typename

4. 创建切片: var varname []typename= make([]typename, len)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习】自动化测试有哪些优势和不足

在当今这个数字化时代&#xff0c;软件测试已经成为了任何一款产品成功的关键因素之一。而在诸多的测试方法中&#xff0c;自动化测试凭借着其独特的魅力吸引着越来越多的企业。今天就让我们一起走进自动化测试的世界&#xff0c;探讨它的优势与不足。 一、自动化测试优势 1.…

symbol 类型学习

探索 JavaScript 中的独特标识符&#xff1a;Symbol 类型 JavaScript 作为一门灵活且功能丰富的编程语言&#xff0c;提供了多种数据类型供开发者构建复杂的应用程序。其中&#xff0c;一种相对新颖且独特的类型——Symbol&#xff0c;为对象属性的管理带来了更高的安全性和定…

你的mongodb客户端是哪个呢?

MongoDB 是一种流行的文档数据库&#xff0c;它可以支持多种场景和应用。有很多客户端工具可以用来管理和操作 MongoDB&#xff0c;以下是一些常用的工具&#xff0c;以及它们的介绍&#xff1a; 一、MongoDB Shell MongoDB Shell 是连接&#xff08;和使用&#xff09;MongoD…

追溯历史:SIEM 中的生成式人工智能革命

作者&#xff1a;来自 Elastic Mike Nichols, Mike Paquette 网络安全领域仿佛是现实世界的一个映射&#xff0c;安全运营中心&#xff08;security operation center - SOC&#xff09;就像是你的数字警察局。网络安全分析师就像是警察&#xff0c;他们的工作是阻止网络犯罪分…

hyref 开发者推荐项目

GitHub - limingxinleo/phalcon: phalcon项目结构 GitHub - fan3750060/wpcore: php , swoole, wow, wowcore, World of Warcraft,master> wow_3.3.5a(Can not work normally) ,branch>wow_2.4.3_8606

基于SpringWeb MultipartFile文件上传、下载功能

在Web开发中&#xff0c;文件上传是一个常见的功能需求。Spring框架提供了MultipartFile接口&#xff0c;用于处理文件上传请求。MultipartFile可以代表一个多部分文件上传请求中的一个文件&#xff0c;提供了一系列方法用于获取文件的各种属性和内容&#xff0c;使得在后端处理…

数据中台规划与建设方案PPT(建议收藏)

推荐书籍&#xff1a; 《分布式商业生态战略&#xff1a;数字商业新逻辑与企业数字化转型新策略》 书籍介绍&#xff1a; 本书从新时代商业环境出发&#xff0c;紧随市场热点&#xff0c;如元宇宙、Web 3.0、资产数字化、反垄断、要素市场化配置、分布式自治组织&#xff08;d…

2024年4月13日美团春招实习试题【第二题:最多0的个数】-题目+题解+在线评测【贪心】

2024年4月13日美团春招实习试题【第二题:最多0的个数】-题目题解在线评测【贪心】 题目描述&#xff1a;输入描述输出描述样例 解题思路一&#xff1a;贪心&#xff0c;将所有负数变为正数&#xff0c;然后排序。nums.sort(key lambda x: abs(x))解题思路二&#xff1a;c解题思…

数据仓库作业五:第8章 关联规则挖掘

目录 第8章 关联规则挖掘作业题 第8章 关联规则挖掘 作业题 1、设4-项集 X { a , b , c , d } X\{a,b,c,d\} X{a,b,c,d}&#xff0c;试求出由 X X X 导出的所有关联规则。 解&#xff1a; 首先生成项集的所有非空真子集。这包括&#xff1a; { a } , { b } , { c } , {…

UE5集成gRPC

最近有项目需要在UE5里做RPC&#xff0c;对比了thrift、gRPC、rcplib等开源rpc框架&#xff0c;由于习惯使用protobuf&#xff0c;故选择了gRPC。然而&#xff0c;Google出品也是一言难尽啊&#xff0c;最起码编译太繁琐了。 本次使用的gRPC版本为1.62.1&#xff0c;UE5.2&…

基于机器学习的车辆状态异常检测

基于马氏距离的车辆状态异常检测&#xff08;单一传感器&#xff09; 基于多元自动编码器的车辆状态异常检测 基于单传感器平滑马氏距离的车辆状态异常检测 工学博士&#xff0c;担任《Mechanical System and Signal Processing》等期刊审稿专家&#xff0c;擅长领域&#xff1…

数据结构详解

数据结构 线性结构 一个有序数据元素的集合其中数据元素之间的关系是一对一的关系&#xff0c;即除了第一个和最后一个数据元素之外&#xff0c;其它数据元素都是首尾相接的 非线性结构 线性结构的对立面 数组 定义 数组是一种线性数据结构&#xff0c;用于存储相同类型…

java面向对象的封装Triangle

&#xff08;1&#xff09;定义三角形类Triangle&#xff0c; * - 声明实例变量a,b,c&#xff0c;代表三角形三条边&#xff0c;全部私有化private&#xff0c; * - 提供每条边的get方法&#xff0c; * - 提供public void setBases(double a, double b, double c)&#xff1a;要…

【Redis(3)】深入理解Redis三种高可用方案,以做出明智的选择

通过上一篇文章详细介绍了Redis的持久化方式RDB和AOF配置&#xff0c;这一篇主要介绍Redis的几种高可用方案。 Redis作为一个成熟的远程字典服务&#xff0c;提供了三种常用的高可用设计方案&#xff0c;Redis的每种高可用性方案都各有千秋&#xff0c;选择时需要细致考虑业务…

JavaSE基础:数值比较

数值比较 目录 数值比较 等值判断 和 的区别 重写 equals 方法 数值比较 compareTo 方法 compare 方法 等值判断 Object 类实现了 equals 方法 &#xff0c;用于比较两个数据元素是否相等。 浮点类型由于精度丢失问题&#xff0c;进行等值判断常出现错误。如果有需求推…

【加密周报】中东“惊雷”炸响币圈!比特币减半成功完成,市场情绪已被提前消化!中美突传USDT重磅消息!

周五(4月19日)&#xff0c;比特币经历惊魂一刻&#xff0c;伊朗核设施所处的中部城市伊斯法罕惊传爆炸&#xff0c;叙利亚与伊拉克也都传来爆炸声响&#xff0c;中东全面战争与核武攻击威胁触发加密市场恐慌情绪。比特币一度下探59600美元。但随后伊朗强调核设施未受损&#xf…

组件安全(Solr、Shiro、Log4j、Jackson、FastJson、XStream)

Solr 主要基于HTTP和 Apache Lucene 实现的全文搜索服务器。 特征&#xff1a;图标识别 端口&#xff1a;8393 CVE-2019-0193&#xff08;远程命令执行漏洞&#xff09; 漏洞版本&#xff1a;Apache Solr < 8.2.0 利用条件&#xff1a; Apache Solr 的 DataImportHandler 启…

数据结构_带头双向循环链表

List.h 相较于之前的顺序表和单向链表&#xff0c;双向链表的逻辑结构稍微复杂一些&#xff0c;但是在实现各种接口的时候是很简单的。因为不用找尾&#xff0c;写起来会舒服一点。&#xff08;也可能是因为最近一直在写这个的原因&#xff09; #pragma once #include<std…

二维码门楼牌管理应用平台建设:构建智能社区治理新模式

文章目录 前言一、二维码门楼牌管理应用平台的意义二、走访日志功能的重要性三、走访日志功能的具体应用四、走访日志功能的优势五、结语 前言 在数字化浪潮下&#xff0c;社区管理正面临着前所未有的机遇与挑战。二维码门楼牌管理应用平台的建设&#xff0c;不仅为社区治理提…

代码随想录训练营Day 27|Python|Leetcode|122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获…