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 string
    username = "蜗牛"
    sex = "男"
    fmt.Println(username, sex)
}
4.批量声明变量
package main
import "fmt"
func main(){
    var (
        a string
        b int 
        c bool
    )
    a = "蜗牛"
    b = 10
    c = true
    fmt.PrintIn(a,b,c)
}

二、常量定义

  • 声明了 pi 和 e 这两个常量之后,在整个程序运行期间它们的值都不能在发生变化了
const pi = 3.1415
const e = 2.7182

//多个常量也可以一起声明
const (
   pi = 3.1415
    e = 2.7182
)
  • const同时声明多个常量时,如果省略了值啧表示和上面一行的值相同 
const(
    n1 = 100
    n2
    n3
)
// 上面示例中,常量n1、n2、n3的值都是 100

三、fmt 包

  • PrintIn:
    • 一次输入多个值的时候 PrintIn 中间有空格
    • PrintIn 会自动换行,Print 不会
  • Print:
    • 一次输入多个值的时候 Print 中间没有空格
    • Print 不会自动换行
  • Printf
    • Printf 是格式化输出,在很多场景在比 PrintIn 更方便
Package  main

import   "fmt"

func main() {
    fmt.Print("蜗牛","白河车","pupu")      //蜗牛白河车pupu
    fmt.PrintIn("蜗牛","白河车","pupu")    //蜗牛 白河车 pupu

    name := "蜗牛"
    age := 21

    fmt.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数据

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(商品和购物车)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现(商品和购物车) 商品热销排行 1 商品-创建数据表 1.使用use命令先选中store数据库。 USE store;2.在store数据库中创建t_product数据表。 CREATE TABLE t_product (id int(20) NOT …

Redis:持久化RDB和AOF

目录 概述RDB持久化流程指定备份文件的名称指定备份文件存放的目录触发RDB备份redis.conf 其他一些配置rdb的备份和恢复优缺点停止RDB AOF持久化流程AOF启动/修复/恢复AOF同步频率设置rewrite压缩原理触发机制重写流程no-appendfsync-on-rewrite 优缺点 如何选择 概述 Redis是…

Ubuntu+Tesla V100环境配置

系统基本信息 nvidia-smi’ nvidia-smi 470.182.03 driver version:470.182.03 cuda version: 11.4 查看系统体系结构 uname -aUTC 2023 x86_64 x86_64 x86_64 GNU/Linux 下载miniconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CM&OA https://mi…

新时代线下门店如何能够降低创业者的风险?

随着社会的发展和科技的进步,共享经济已经渗透到生活的各个领域。在这个大背景下,共享门店共享股东的商业模式应运而生,为传统门店经营带来了全新的思路和方向。而下面这个故事诠释了一个普通青年的底层崛起之路。 在繁华的都市中&#xff0c…

5、Qt:项目中包含多个子项目(.pro)/子模块(.pri)

一、说明: 在进行项目开发过程中,会涉及子项目/子模块的问题 Qt中使用TEMPLATE subdirs添加多个子项目;子项目可以单独编译生成可执行文件(exe)或者动态链接库(dll)等,供其他模块…

阿里云ACE认证之国际版与国内版对比!

大厂疯狂裁员,互联网行业迎来寒冬,技术人员被动陷入疯狂内卷。在愈加内卷的IT领域,“云计算”作为少有的蓝海,无疑是打工人未来实现职场提升、摆脱内卷的绝佳选择! 对于云计算行业的人来说,最值得考的肯定是…

Linux中部署MongoDB

在 是一个必要的过程,因为MongoDB是一种流行的NoSQL数据库,它可以在大多数操作系统上使用。在本文中,我们将介绍如何在CentOS 8上部署MongoDB。 MongoDB的下载 您可以从MongoDB官网上下载最新的MongoDB版本。使用以下命令下载MongoDB&#…

C#,《小白学程序》第二十二课:大数的乘法(BigInteger Multiply)

1 文本格式 using System; using System.Linq; using System.Text; using System.Collections.Generic; /// <summary> /// 大数的&#xff08;加减乘除&#xff09;四则运算、阶乘运算 /// 乘法计算包括小学生算法、Karatsuba和Toom-Cook3算法 /// </summary> p…

python的pandas中如何在dataframe中插入一行或一列数据?

dataframe类型是如何插入一行或一列数据的呢&#xff1f;这个需求在本文中将会进行讨论。相比较ndarray类型的同样的“数据插入”需求&#xff0c;dataframe的实现方式&#xff0c;则不是很好用。本文以一个dataframe类型变量为例&#xff0c;测试插入一行数据或者一列数据的方…

人力资源管理后台 === 登陆+主页鉴权

目录 1. 分析登录流程 2. Vuex中用户模块的实现 3.Vue-cli代理解决跨域 4.axios封装 5.环境区分 6. 登录联调 7.主页权限验证-鉴权 1. 分析登录流程 传统思路都是登录校验通过之后&#xff0c;直接调用接口&#xff0c;获取token之后&#xff0c;跳转到主页。 vue-elemen…

【心得】XXE漏洞利用个人笔记

XML中关于DTD类型(内部(SYSTEM)的和外部(PUBLIC)的区别) xxe的利用 XML Entity 实体注入 当程序处理xml文件时&#xff0c;没有禁止对外部实体的处理&#xff0c;容易造成xxe漏洞 危害 主流是任意文件读取 XML 文件 一般表示带有结构的数据 祖父 3个叔父 8个堂弟堂妹 …

App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法

&#x1f4dd; App备案与iOS云管理式证书 &#xff0c;公钥及证书SHA-1指纹的获取方法 引言 在iOS应用程序开发过程中&#xff0c;进行App备案并获取公钥及证书SHA-1指纹是至关重要的步骤。本文将介绍如何通过appuploader工具获取iOS云管理式证书 Distribution Managed 公钥…

Django(十一、auth认证模块)

文章目录 一、auth介绍auth认证相关模块及操作扩展auth_user表 一、auth介绍 Django自带一个admin路由&#xff0c;但是需要我们提供管理员账户和密码&#xff0c;如果想要使用admin后台管理&#xff0c;需要先创建表&#xff0c;然后创建管理员账户。 直接执行数据类迁移命令…

二、Lua数据类型

文章目录 一、数据类型nil二、数据类型boolean三、数据类型number四、数据类型String&#xff08;一&#xff09;用单引号或双引号&#xff1a;&#xff08;二&#xff09;可以包含换行的字符串&#xff08;三&#xff09;字符串与数字做数学运算时&#xff0c;优先将字符串转换…

抖音开新店,十个设置,实操满满全是干货

抖店开店的第一天手足无措不知从哪入手&#xff1f;我给大家分享一个新手开店必须完成的十个设置&#xff0c;实操满满全是干货&#xff0c;每一项都很重要&#xff01;特别是新手一定要认真看&#xff0c;因为这个直接关系到你店铺能否正常经营&#xff0c;跟着我一起来实操一…

C语言线性表的实现(详解)

数据结构之线性表 ​ 线性表的基本概念&#xff1a;线性表是由0个或者多个数据元素的有限序列 ​ 特性是&#xff1a; ​ 1&#xff1a;数据元素之间都是有顺序的 ​ 2&#xff1a;数据元素的个数是有限的&#xff0c; ​ 3&#xff1a;数据元素的类型是相同的 ​ 性质是&…

Java代码生成器,一键在线生成,支持自定义模板

【Java代码生成神器】自动化生成Java实体类、代码、增删改查功能&#xff01;点击访问 推荐一个自己每天都在用的Java代码生成器&#xff01;这个网站支持在线生成Java代码&#xff0c;包含完整的Controller\Service\Entity\Dao代码&#xff0c;完整的增删改查功能&#xff01…

给国外客户价格报低了怎么办

前一段时间有一个单子的货发出去了&#xff0c;被朋友提醒才发现自己报错了价格&#xff0c;造成了亏损&#xff0c;而报错价格的原因并不是自己看错了或者是抄错了价格&#xff0c;而是自己的脑子里记错了产品的价格列表。 如果不是朋友善意的提醒&#xff0c;大概我会一直错…

.NET的Dockerfile文件编写要点——以WOL项目为例

本文以 WOL 的.NET 项目为例&#xff0c;介绍了 Dockerfile 的基础知识和编写要点&#xff0c;旨在帮助读者更好地理解和掌握如何为 .NET 应用创建和优化 Dockerfile。 1. 背景 前面我们已经勾选了 Docker 容器化支持&#xff0c;项目已经生成了一个默认的 Dockerfile。但在实…

快速上手Banana Pi BPI-R4 MediaTek MT7988A 开源路由器开发板

基础开发 准备开发 * 准备8G以上TF卡、USB转串口线、Ubuntu系统* 使用 USB 串行电缆&#xff08;3.3V TTL&#xff0c;波特115200&#xff09;连接到 BPI-R4 上的调试控制台G接地&#xff1b;RXBPI-R4输入&#xff1b;TXBPI-R4输出* BPI-R4 引导程序和设备选择跳线设置* 例子…