Go 基本语法

一、​​​​变量定义方法

  1. var 定义变量
  • var 变量名 类型 = 表达式
var name string = "Snail"
var age int =21
var isOK bool bool
2.类型推导方式定义变量
  • a 在函数内部,可以使用更简略的:= 方式声明并初始化变量
  • **注意:**短变量只能用于声明局部变量,不能用于全局变量的声明              
// 变量名 :=表达式
n := 10
var age = 18
3.一次定义多个变量
package main
import  "fmt"
func main(){var username ,sex stringusername = "蜗牛"sex = "男"fmt.Println(username, sex)
}
4.批量声明变量
package main
import "fmt"
func main(){var (a stringb int c bool)a = "蜗牛"b = 10c = truefmt.PrintIn(a,b,c)
}

二、常量定义

  • 声明了 pi 和 e 这两个常量之后,在整个程序运行期间它们的值都不能在发生变化了
const pi = 3.1415
const e = 2.7182//多个常量也可以一起声明
const (pi = 3.1415e = 2.7182
)
  • const同时声明多个常量时,如果省略了值啧表示和上面一行的值相同 
const(n1 = 100n2n3
)
// 上面示例中,常量n1、n2、n3的值都是 100

三、fmt 包

  • PrintIn:
    • 一次输入多个值的时候 PrintIn 中间有空格
    • PrintIn 会自动换行,Print 不会
  • Print:
    • 一次输入多个值的时候 Print 中间没有空格
    • Print 不会自动换行
  • Printf
    • Printf 是格式化输出,在很多场景在比 PrintIn 更方便
Package  mainimport   "fmt"func main() {fmt.Print("蜗牛","白河车","pupu")      //蜗牛白河车pupufmt.PrintIn("蜗牛","白河车","pupu")    //蜗牛 白河车 pupuname := "蜗牛"age := 21fmt.Printf("%s 今年 %d 岁",name,age)   //蜗牛 今年 21 岁
}

四、 init 函数和 main 函数

1.init 函数
  • go 语言中 init 函数用于包(package)的初始化,该函数是 go 语言的一个重要特性
  • 有下面的特征:
    • init 函数是用于程序执行前做包的初始化函数,比如初始化包里的变量等
    • 每个包可以拥有多个 init 函数
    • 包的每个源文件也可以拥有多个 init 函数
    • 同一个包中多个 init 函数的执行顺序 go 语言没有明确的定义(说明)
    • 不同包的 init 函数按照包导入的依赖关系决定该初始化函数的执行顺序
    • init 函数不能被其他函数调用,而是在 main函数执行之前,自动被调用
 2.main 函数
//Go 语言程序的默认入口函数(主函数):func main()
//函数体用{}一对括号包裹fun main(){//函数体
}
3.init 函数和 main 函数的异同
  • 相同点:
    • 两个函数在定义时不能有任何的参数和返回值,且 Go 程序自动调用
  • 不同点:
    • init 可以应用于任意包中,且可以重复定义多个
    • main 函数只能用于用于 main 包中,且只能定义一个
  • 两个函数的执行顺序:
    • 对同一个 go 文件的 init()调用顺序是从上到下的
  • 对同一个 package 中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的 init 函数
    • 对不同的 package,如果不相互依赖的话,按照 main 包中先 import 的后调用的顺序调用其包中的 init()
  • 如果 package 存在依赖,则先调用最早被依赖的 package 中 init(),最后调用 main 函数
    • 如果 init 函数中使用了 printIn()或者 print()你会发现在执行过程中这两个不会按照你想象中的顺序执行
    • 这两个函数官方只推荐在测试环境中使用
4.init() 函数介绍
  • 在 Go 语言程序执行时导入包语句会自动触发包内部 init()函数的调用
  • 需要注意的是:init()函数没有参数也没有返回值
  • init()函数在程序运行时自动被调用执行,不能在代码中主动调用它
  • 包初始化执行的顺序入下图所示:

五、命令

  1. go env 用于打印 Go 语言的环境信息
  2. go run命令可以编译并运行命令源码文件
  3. go get 可以根据要求和实际情况从互联网上下载货更新指定的代码包及其依赖包,并对它们进行编译和安装
  4. go build 命令用于编译我们指定的源码文件货代码包以及它们的依赖包
  5. go install用于编译并安装指定的代码包及它们的依赖包
  6. go clean 命令会删除掉执行其他命令是产生的一些文件和目录
  7. go doc命令可以打印附于 Go 语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的
  8. go test命令用于对 Go 语言编写的程序进行测试
  9. go list命令的作用是列出指定的代码包的信息
  10. go fix会把指定代码包的所有 Go 语言源码文件中的旧版本代码修正为新版本的代码
  11. go vet是一个用于检查 Go 语言源码中静态错误的简单工具
  12. go tool pprof 命令来交互式的访问概要文件的内容

六、golang 中关键字

  • var 和 const:变量和常量的声明
  • package and import:导入
  • func:用于定义函数和方法
  • return:用于从函数返回
  • defer someCode:在函数退出之前执行
  • go:用于并行
  • select: 用于选择不同类型的通讯
  • interface: 用于定义接口
  • struct:用于定义抽象数据类型
  • break、case、continue、for、fallthrough、else、if、switch、goto、default、流程控制
  • chan:用于 channel 通讯
  • type:用于声明自定义类型
  • map:用于声明 map 类型数据
  • range:用于读取 slice、map、channel数据

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

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

相关文章

kaggle使用matplotlib画图中文乱码问题解决

import matplotlib import matplotlib.pyplot as plt myfont matplotlib.font_manager.FontProperties(fnamer/kaggle/input/flux-predict/STFANGSO/STFANGSO.TTF) train_corr df_train.corr() k 6 cols train_corr.nlargest(k,4G流量MB(1024)(兆字…

什么是可重入锁

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

2023最全的自动化测试入门基础知识(超详细~)

1)首先,什么是自动化测试? 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的过程一步步执行测试,得到实际结果与期望结果的比较。…

pdf加密文件解密(pdf文件解密小工具)

工具放在文章末尾! 1.pdf文件加密后会有很多使用权限的限制很不方便,只要是为了pdf的数据不被二次利用,未加密的pdf功能都是可以正常使用的 2.加密后的pdf使用权限会被限制部分 3.工具只能解决pdf编辑等加密情况,不能解决文件打…

浅谈UML的概念和模型之UML九种图

1、用例图(use case diagrams) 【概念】描述用户需求,从用户的角度描述系统的功能 【描述方式】椭圆表示某个用例;人形符号表示角色 【目的】帮组开发团队以一种可视化的方式理解系统的功能需求 【用例图】 2、静态图 类图&…

SpringBoot——自定义start

优质博文&#xff1a;IT-BLOG-CN 一、Mybatis 实现 start 的原理 首先在写一个自定义的start之前&#xff0c;我们先参考下Mybatis是如何整合SpringBoot&#xff1a;mybatis-spring-boot-autoconfigure依赖包&#xff1a; <dependency><groupId>org.mybatis.spr…

【总结】重极限的计算

这个做法比较严谨&#xff0c;我之前是想着分母趋于0&#xff0c;分子也得趋于0&#xff0c;这个有界量乘无穷小还是无穷小的手法还是很漂亮的。 图一源链接https://www.zhihu.com/question/269472244 图二选自李艳芳真题解析

FFmepg 核心开发库及重要数据结构与API

文章目录 前言一、FFmpeg 核心开发库二、FFmpeg 重要数据结构与 API1、简介2、FFmpeg 解码流程①、FFmpeg2.x 解码流程②、FFmpeg4.x 解码流程 3、FFMpeg 中比较重要的函数以及数据结构①、数据结构②、初始化函数③、音视频解码函数④、文件操作⑤、其他函数 三、FFmpeg 流程1…

福利来了| 200多款精选简历模板免费领,让你30秒内征服HR!

找工作是不是让你很头大&#xff1f;尤其是写简历&#xff0c;真的好痛苦啊&#xff01;我在网上找了好久&#xff0c;都没有找到合适的简历模板&#xff0c;自己做又不知道从哪里下手。 不过现在好了&#xff0c;有一个超级福利送给大家&#xff01;200多款精选简历模板免费领…

使用HTML+CSS+JS网页设计与制作,酷炫动效科技农业网页

使用HTMLCSSJS网页设计与制作&#xff0c;酷炫动效科技农业网页。 可以用于家乡介绍、科技农业、图片画廊展示等个人网站的设计与制作。农业网站、家乡网站、农产品网站、旅游网站。 网站亮点 1、视觉设计&#xff1a;排版布局极简设计&#xff0c;优质的视觉体验等。 2、动…

手摸手Element-ui路由VueRoute

后端WebAPI准备 https://router.vuejs.org/zh/guide/ https://v3.router.vuejs.org/zh/installation.html <template><el-table:data"tableData"style"width: 100%":row-class-name"tableRowClassName"><!-- <el-table-colum…

3-全功能pytest测试框架-allure2

3-全功能pytest测试框架-allure2 一:Allure介绍1> Allure 优势2> Allure 安装二:allure demo1> 脚本demo2> 查看result三:allure装饰器1> 装饰器一览表2> 装饰器概述1. epic、feature、story3> @allure.title()4> @allure.testcase()5> @allure.…

Vue框架学习笔记——侦听(监视)属性watch:天气案例+immediate+deep深度监听

文章目录 前文提要天气案例描述样例代码呈现效果&#xff1a;事件的响应中可以写一些简单的语句&#xff08;不推荐&#xff09; 侦听&#xff08;监视&#xff09;属性watch结合天气案例的第一种写法&#xff08;New Vue&#xff09;immediate&#xff1a; 侦听&#xff08;监…

为什么要用 Redis 而不用 map/guava 做缓存? Redis为什么这么快 Redis有哪些数据类型 Redis的应用场景

文章目录 为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快Redis有哪些数据类型Redis的应用场景总结一计数器缓存会话缓存全页缓存&#xff08;FPC&#xff09;查找表消息队列(发布/订阅功能)分布式锁实现 总结二 简单的聊聊Redis常见的一些疑问点&#xff1a;具体…

Spring Security 6.1.x 系列(5)—— Servlet 认证体系结构介绍

一、前言 本章主要学习Spring Security中基于Servlet 的认证体系结构&#xff0c;为后续认证执行流程源码分析打好基础。 二、身份认证机制 Spring Security提供个多种认证方式登录系统&#xff0c;包括&#xff1a; Username and Password&#xff1a;使用用户名/密码 方式…

MATLAB中FFT频谱分析使用详解

文章目录 语法说明语法一&#xff1a;Y fft(X)fft(X)返回X长度的傅里叶变换 语法二&#xff1a;Y fft(X,N)如果 X的长度小于 N&#xff0c;则为 X补上尾零以达到长度 N(FFT插值)双边谱转换为单边谱 如果 X 的长度大于 N&#xff0c;则对 X 进行截断以达到长度 N。 语法三&…

Postman如何使用(四):接口测试

一.接口 1.程序内部接口&#xff1a;方法与方法之间&#xff0c;模块与模块之间的交互&#xff0c;程序内部抛出的接口&#xff0c;比如bbs系统&#xff0c;有登录模块&#xff0c;发帖模块等等&#xff0c;那你要发帖就必须先登录&#xff0c;那么这两个模块就得有交互&#…

什么是数据增强,为什么会让模型更健壮?

在做一些图像分类训练任务时&#xff0c;我们经常会遇到一个很尴尬的情况&#xff0c;那就是&#xff1a; 明明训练数据集中有很多可爱猫咪的照片&#xff0c;但是当我们给训练好的模型输入一张戴着头盔的猫咪进行测试时&#xff0c;模型就不认识了&#xff0c;或者说识别精度…

栈和队列OJ题目——C语言

目录 LeetCode 20、有效的括号 题目描述&#xff1a; 思路解析&#xff1a; 解题代码&#xff1a; 通过代码&#xff1a; LeetCode 225、用队列实现栈 题目描述&#xff1a; 思路解析&#xff1a; 解题代码&#xff1a; 通过代码&#xff1a; LeetCode 232、用栈…

Harmony入门-HelloWorld

HarmonyOS 已经出来一些时间了。也有了OpenHarmony&#xff0c;作为HarmonyOS抽离的基础架构OpenHarmony&#xff0c;贡献给开源了&#xff0c;后续独立出来&#xff0c;那可真是就要独立生态啦&#xff0c;咱们顺水行舟&#xff0c;学习学习。 1.IDE 安装 https://hmxt.org/d…