go语言学习文档精简版

Go语言是一门开源的编程语言,目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力,以及在现代语言中所见到的高级特性。

你好,Go

package main // 程序组织成包import "fmt" // fmt包用于格式化输出数据// 主函数入口
func main() {// 输出语句fmt.Printf("hello world")
}

如果你没有本地的Go语言环境,可以通过浏览器在线方式学习: https://go.dev/play/

一、数据类型

1.1 变量

Go语言是一种静态类型的编程语言。

可以通过 var 声明一个或多个变量

var str = "apple"

也可以通过 := 语法来进行初始化变量的简写

str := "apple"

以上两种创建方式应用代码如下:

package mainimport "fmt"func main() {var a = "saycode" // 字符串fmt.Println(a)var b, c int = 1, 2 // 整型fmt.Println(b, c)var d = true 	// 布尔型fmt.Println(d)var e int		// 声明变量类型为 intfmt.Println(e)// 简化方式f := "apple" // 字符串fmt.Println(f)g := true	// 布尔型fmt.Println(g)
}

可以在同一行内创建多个变量

多行创建

name := "saycode"
age := 10

同行创建

package mainimport "fmt"func main() {name, age := "saycode", 10fmt.Println(name, age)
}

1.2 常量

常量是可不变的值,Go语言支持字符、字符串、布尔值和数字值的常量。

使用 const 关键字声明

错误案例

运行当前程序发现报错cannot assign to name (untyped string constant "I Like Go"),也就证实了,常量进行初始化值后,是不可以进行改变的。

package mainimport "fmt"func main() {const name := "I Like Go"name = "I Like Java"fmt.Println(name)
}

正确案例

将π作为常量进行声明,接着去计算出圆的面积。

package mainimport "fmt"const PI = 3.14func main() {// 计算圆的面积const r = 2const area = PI * r * rfmt.Println(area)
}

二、格式化输出

2.1 默认方式

如果不确定要用什么,可以直接使用%v (最好使用特定)

fmt.Printf("我今年 %v 岁", 20)
// 我今年 20 岁
fmt.Printf("我叫 %v", "张三")
// 我叫 张三

2.2 字符串

当需要特定插入字符串时,可使用 %s

fmt.Printf("我叫 %s", "张三")

2.3 十进制整数

当需要特定插入十进制整数时,可使用%d

fmt.Printf("我今年 %d 岁", 10)
// 我今年 10岁

2.4 浮点数

当需要插入浮点数时,可使用 %f

.数字f (.2f),含义就是保留小数点后两位

fmt.Printf("我今年 %f 岁", 10.22)
// 我今年 10.220000岁
fmt.Printf("我今年 %.2f 岁", 10.22)
// 我今年 10.22岁

2.5 变量类型

当需要查看当前变量类型时,可使用%T

package mainimport "fmt"func main() {num := 10fmt.Printf("num类型为 %T", num)
}

三、选择结构

3.1 条件判断

if语句是一种用于判断条件的结构,他将根据布尔表达式,结果就是 (true 或 false)的结果来决定是否执行某段代码。

else 是不满足前一个 if 后去执行的代码块。

如下代码就是判断 x > 5(布尔表达式), 如果大于则执行"x大于5",否则执行 "x小于或等于5"

if x > 5 {fmt.Println("x大于5")
} else {fmt.Println("x小于或等于5")
}

3.2 if的嵌套

可以通过嵌套的方式去判断多个值

if x > 5 {fmt.Println("x大于5") 
} else if x < 5 {fmt.Println("x小于5")
} else {fmt.Println("x等于5")
}

if语句可以有初始化语句,初始化语句中创建的变量只在if语句块中使用。

以下代码是通过getLength方法去获取email字符串的长度,在去对长度进行判断大小是否小于1。

package mainimport "fmt"func main() {email := "nazhanpeng@163.com"// 语法糖创建if length := getLength(email); length < 1 {fmt.Println("邮箱长度小于1")} else {fmt.Println("邮箱没问题")}}func getLength(a string) int {return len(a)
}

四、方法

一个基本的函数需要包含函数名、参数列表、返回值类型和函数体。

例如定义一个函数名为add的函数,包含两个参数a、b,返回值类型为int类型,函数体是a+b计算两个整数的和。

func add(a int, b int) int {return a + b
}

函数可以有0个或多个参数。

4.1 返回结果

一般用于去终止函数并返回结果。在Go中可以返回单个值或多个值。

单个值返回已经在上面返回了。

4.1.1 多个值返回

package mainimport "fmt"func divide(a int, b int) (int, int) {quotient := a / bremainder := a % breturn quotient, remainder
}func main() {q, r := divide(4, 3)fmt.Println(q,r)
}

4.1.2 命名返回值

命名返回值在函数代码块内为局部变量,可以进行使用。

package mainimport "fmt"func rectangleArea(width, height int) (area int) {area = width * heightreturn
}func main() {area := rectangleArea(5,6)fmt.Println("area", area)
}

4.1.3 空返回语句

可以使用空return返回结果

package mainimport "fmt"func swap(a, b int) (x, y int) {x = by = areturn
}func main() {x, y := swap(1,2)fmt.Println("x", y, "y", y)
}

4.1.4 按照值传递变量

意味着当一个变量传递给一个函数时,该函数收到的是该变量的副本。

我们发现x的值还是5,就说明函数无法去改变传递变量的值。

package mainimport "fmt"func main() {x := 5increment(x)fmt.Println("x=", x)}func increment(x int) {x++
}

明天继续更新,请关注我

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C++ primer plus 第16章string 类和标准模板库, 函数符概念

C primer plus 第16章string 类和标准模板库, 函数符概念 C primer plus 第16章string 类和标准模板库, 函数符概念 文章目录 C primer plus 第16章string 类和标准模板库, 函数符概念16.5.1 函数符概念程序清单16.15 functor.cpp 16.5.1 函数符概念 正如 STL定义了容器和迭代…

20240725项目的maven环境报红-重新配置maven

1.在编辑器里面打开项目&#xff0c;导入源码 &#xff08;1&#xff09;找到项目的地址C:\Users\zzz\IdeaProjects\datasys&#xff0c;然后右击用idea编辑器打开。 &#xff08;2&#xff09;idea中上菜单栏打开open&#xff0c;然后输入file&#xff0c;选择源代码文件 2.…

C++ //练习 15.28 定义一个存放Quote对象的vector,将Bulk_quote对象传入其中。计算vector中所有元素总的net_price。

C Primer&#xff08;第5版&#xff09; 练习 15.28 练习 15.28 定义一个存放Quote对象的vector&#xff0c;将Bulk_quote对象传入其中。计算vector中所有元素总的net_price。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块&am…

openFeign配置okhttp

原来的项目出现了性能问题&#xff0c;老大不知道怎么的&#xff0c;让我改openFeign线程池为okhttp&#xff0c;说原生的不支持线程池性能比较差。 原openFeign配置文章地址 一、pom文件 <dependency><groupId>org.springframework.cloud</groupId><arti…

泰金新能估值暴增之谜:研发费用率远低同行,资产负债率居高不下

《港湾商业观察》施子夫 王璐 作为新“国九条”首家受理的科创板IPO企业&#xff0c;外界对于西安泰金新能科技股份有限公司&#xff08;以下简称&#xff0c;泰金新能&#xff09;的关注度自然相当之高。 泰金新能保荐机构为中信建投。通过招股书不难看出&#xff0c;公司的…

idea中导入外部依赖并打包到jar包中

前言&#xff1a; 很多时候在我们写项目对接三方的时候都需要导入三方jar包&#xff0c;而这时候我们用平常的pom里面写依赖发现导入不了&#xff08;直接把jar包放在本地导入的话打包的话也不会将该依赖打包进我们项目的jar包&#xff09;&#xff0c;我在网上找了几种方法 …

使用双指针法解决最大容积问题:移动较短的线以优化面积【双指针】

在解决算法问题时&#xff0c;我们常常需要寻找最佳的方法来提高效率。今天&#xff0c;我们将讨论一个经典的问题——在一组垂直线中找到两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。这篇文章将详细解析如何使用双指针法来解决这个问题&#xff0c;特别…

仪器校准中,标准样品要怎么选用?需要注意什么?

正确使用标准物质和标准样品是保证仪器校准值准确可靠的重要手段。标准物质的正确使用包括正确选择、正确使用&#xff08;防止误用&#xff09;和使用中的注意事项。 1. 参考资料证书之中给出的“参考资料的使用”信息&#xff0c;用户应予以注意。当参比材料用于证书所述用途…

自研点直播转码核心

1. 背景 视频转码是将视频文件经过解封装、解码、滤镜处理、编码、封装从而转换为另一个视频文件的过程&#xff0c;B站每天都有大量的视频原片上传后经过转码系统转换为多个不同分辨率。转换后的视频在画质接近原片的前提下会拥有更低的码率&#xff0c;因此会提高网络传输时的…

未来的智能农业:智能合约如何提升农业生产效率和可持续性

随着全球人口的增长和资源的有限性&#xff0c;农业生产面临着越来越大的挑战。如何在提高生产效率的同时保障可持续发展成为全球农业发展的关键问题。智能合约作为一种基于区块链技术的自动化执行合约&#xff0c;正在逐渐应用于农业领域&#xff0c;为农业生产带来了新的机遇…

Leetcode刷题-----移动零283复写零问题1089

目录 1.问题介绍 1.1题目要求 1.2思路分析 1.3想法实现 2.复写零问题 2.1问题分析 2.2思路分析 2.3想法实现 1.问题介绍 1.1题目要求 把这个数组里面为0的元素挪动到这个数组的后面&#xff0c;其他的非零元素的相对位置保持不变&#xff1b; 1.2思路分析 这个里面&a…

甄选范文“论软件测试中缺陷管理及其应用”软考高级论文,系统架构设计师论文

论文真题 软件缺陷指的是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。在目前的软件开发过程中,缺陷是不可避免的。软件测试是发现缺陷的主要手段,其核心目标就是尽可能多地找…

场外期权如何报价?名义本金是什么?

今天带你了解场外期权如何报价&#xff1f;名义本金是什么&#xff1f;投资者首先需要挑选自己想要进行期权交易的沪深上市公司股票。选出股票后&#xff0c;需要将股票信息、预期的操作时间&#xff08;如期限&#xff09;、看涨或看跌的选择以及预计的交易金额等信息报给场外…

Cisco OSPF LSA 类型详解指南

注&#xff1a;机翻&#xff0c;未校对。 OSPF LSA Types: The Ultimate Guide OSPF LSA Types – OSPF LSA 类型 – OSPF uses LSAs or Link state Advertisements to share information of each network and populate the LSDB (Link State Database). The LSAs are used by…

ppt模板如何制作?5个工具让你事半功倍

让我瞧瞧是谁还在为寻找PPT模板而发愁&#xff1f; 其实这可不是什么难题~身为职场高效打工人的我&#xff0c;今天便特地为大家整理了5大ppt模板ai生成神器~想知道都有哪些选择吗&#xff1f;接着往下看你便清楚啦&#xff01; ✮迅捷PPT ☺使用场景&#xff1a;商业演示、教…

dsp c6657 SYS/BIOS学习笔记

1 SYS/BIOS简介 SYS/BIOS是一种用于TI的DSP平台的嵌入式操作系统&#xff08;RTOS&#xff09;。 2 任务 2.1 任务调度 SYS/BIOS任务线程有0-31个优先级&#xff08;默认0-15&#xff0c;优先级0被空闲线程使用&#xff0c;任务最低优先级为1&#xff0c;最高优先级为15&am…

《MySQL DBA 修炼之道》第五章 查询优化

《MySQL DBA 修炼之道》原文是在第六章 查询优化&#xff0c;博主觉得比较重要&#xff0c;所以想提前整理为一篇博文。 查询优化是研发人员比较关注也是疑问最多的领域。 基础知识 1. 查询优化的常用策略 一般的常用策略 优化数据访问、重写SQL、重新设计表、添加索引 4种…

【鸿蒙开发】鸿蒙ArkUI自定义组件如何封装一个好用的Toast/Loading/ProgressHUD组件

1. HUD 在移动端 App 开发中&#xff0c;Toast 、 Loading 和 Progress 是十分常用的UI控件&#xff0c;如果不做特殊要求&#xff0c;一般可以直接使用系统 API 提供的方法&#xff0c;但如果想要定制化 UI&#xff0c;就需要自定义实现了。 在 HarmonyOS 中&#xff0c;Toa…

Leetcode—769. 最多能完成排序的块【中等】

2024每日刷题&#xff08;149&#xff09; Leetcode—769. 最多能完成排序的块 实现代码 class Solution { public:int maxChunksToSorted(vector<int>& arr) {int ans 0;int mx INT_MIN;for(int i 0; i < arr.size(); i) {mx max(arr[i], mx);if(mx i) {a…