Go语言基础语法 20240904更新

2024-09-04 11:52

本文主要是介绍Go语言基础语法 20240904更新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码开源地址

https://github.com/zhangdapeng520/zdpgo_basic

快速入门

示例代码:

package mainimport "fmt"func main() {fmt.Println("Hello World")
}

第一行代码 package 用来声明包名。main包时整个程序的入口包,在一个Go语言的程序中,有且只有一个main包。

第二行代码 import 用于导入内置包或者第三方包。内置包一般是不带前置的,第三方包一般都带有一个域名作为前缀,比如 github.com/zhangdapeng520/zdpgo_basic

第三行代码 func 用来声明方法名,main 方法是一个特殊的方法。main包中的main方法是整个程序的入口方法,Go语言的代码是从main方法开始执行的。

Go程序不要求在每一句代码后面加分号,换行代表一行代码结束了。

main函数是没有参数,没有返回值的。

fmt.Println 用来输出数据到终端,这里的代码是向终端输出 “Hello World” 的字符串。

程序运行方式

方法1:这种方案是将编译和执行合并在一起了,本质上Go编译器还是会帮我们先把代码编译成一个可执行文件,然后再执行这个可执行文件。

go run main.go

方法2:这种方法是手动编译一个可执行文件,然后再手动执行这个可执行文件。

go build -o main
./main

定义一个简单的方法

示例代码:

package mainimport "fmt"// 定义一个简单的方法
func hello() {fmt.Println("hello world")
}func main() {// 调用方法hello()
}

使用 func 可以用来定义方法。这里定义的是一个没有参数没有返回值的方法。也是最简单的一种方法形态。

在学习阶段,我们可以将知识点封装在一个又一个的方法中,便于快速学习和组织代码。后面我们还会学习关于方法的更多高级的知识。

单元测试

Go语言中的单元测试特别简单,只需要在同包中创建一个xxx_test.go文件就会被认为是单元测试文件。

比如我们有一个hello.go文件,那么我们创建一个hello_test.go文件就会被认为是基于hello.go的单元测试文件。

单元测试文件中可以写单元测试代码,单元测试代码可以单独执行,独立于main方法之外。

示例:hello.go

package mainimport "fmt"// 定义一个简单的方法
func hello() {fmt.Println("hello world")
}

示例:hello_test.go

package mainimport "testing"func TestHello(t *testing.T) {hello()
}

在Goland中,单元测试方法可以直接通过点击运行,这种方式比较推荐。

如果要通过命令行执行测试代码,则在测试文件所在目录执行如下命令:

go test

基本类型:int,uint

int是带符号的整数类型,uint是不带符号的整数类型。

在Go语言中,int类型比较多,主要包括int,int8,int16,int32,int64,每种int类型都有对应的uint类型。

示例代码:

package mainimport "fmt"func main() {var n1 intvar n2 int8var n3 int16var n4 int32var n5 int64fmt.Println(n1, n2, n3, n4, n5)var un1 uintvar un2 uint8var un3 uint16var un4 uint32var un5 uint64fmt.Println(un1, un2, un3, un4, un5)
}

上面的代码会输出:

0 0 0 0 0
0 0 0 0 0

因为整数类型的默认值是0,如果我们声明了整数类型,但是没有赋值,Go编译器会自动帮我们使用0作为整数类型的默认值。

算术运算符

Go语言支持常见的算术运算符:

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取余

示例代码:

package mainimport "fmt"func main() {var n1 int = 33var n2 int = 333fmt.Println(n1 + n2)fmt.Println(n1 - n2)fmt.Println(n1 * n2)fmt.Println(n1 / n2)fmt.Println(n1 % n2)
}

这篇关于Go语言基础语法 20240904更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135952

相关文章

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

GIS图形库更新2024.8.4-9.9

更多精彩内容请访问 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信:digital_twin123 Cesium 本期发布了1.121 版本。重大新闻,Cesium被Bentley收购。 ✨ 功能和改进 默认启用 MSAA,采样 4 次。若要关闭 MSAA,则可以设置scene.msaaSamples = 1。但是通过比较,发现并没有多大改善。

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念