golang的基础语法

golang的基础语法和其他语言大部分都差别不大,如果我们有学习过其他语言,比如JavaScript,php,java,python等,有其他语言的语法基础,那么我们学习golang将更容易上手。那我们直接开始介绍golang的语法吧。

注释

注释分单行注释和多行注释。golang的注释和其他的开发语言的注释是一样的。双斜杠表示单行注释,/**/表示多行注释。

// 单行注释这么开头

/*

多行注释

*/

定义包名

一般来说,使用开发工具的时候,包名是不需要手动输入的,开发工具会在创建文件的时候,自动生成包名。

比如定义一个包名称为main的包:

package main //定义一个名称为main的包

每个go文件中必须定义包名来指明该文件归属于哪个包,而且定义包名必须在文件中非注释的第一行;

go文件中若存在程序入口(main函数),则该文件定义的包名必须为main;

一个文件中有且只有一次定义,即只有一行package语句;

包名和文件名没有必然联系,可以不同。

导入依赖库

依赖库分为系统库和第三方依赖库。导入方式有两种,单行导入和合并导入。一般上开发工具会自动帮忙处理。引用一个包的时候,使用单行,需要引用多个包的时候,会自动合并引用。

注意:导入的包都必须使用,若没有使用编译时将报错。所以不要引入无用的包。

import "fmt"

import (

"os"

"strings"

"gorm.io/gorm"

"github.com/kataras/iris/v12"

)

函数

func是函数定义的关键字,函数体用 { } 包围,注意: { (左括号)不能单独成行,必须和main()在同一行。函数名小写的时候表示这个函数是私有函数,函数名大写的时候,表示这个函数是公开函数,公开函数可以全局访问,私有函数只能在自己的包内访问。

func main(){

fmt.Println("Hello World")

}

函数调用

函数的调用方式分2种,同一个包内的函数调用,可以直接写函数名称就可以,不同包之间的调用,需要引入对方的包,然后通过包名.函数名的方式调用。

比如下方的函数调用是调用了fmt包的Println函数。

fmt.Println("Hello World")

变量、常量、占位符、运算符、数组、指针、结构体

变量

变量使用之前,需要先声明。变量的声明分几种方式。一种是在开头的时候声明,使用 var 关键词来声明变量,另一种是在使用的时候声明, 使用 := 来声明和赋值。还有一种是合并声明。不过尽量单独声明。

var a int = 1 //第一种: var 变量名 变量值

value := 2 //第二种: value_name := 1

var b, c, d = 1, 2, 3 //第三种: 合并声明

var( //第四种: 合并声明

value1 int = 3

value2 string = "Hello World"

)

上述有三种变量声明方式,var是golang的关键词,用于变量的声明。第一、三和四种可以在任意地方声明,当定义在函数体外时相当于全局变量;而第二种只能在函数体内声明,相当于局部变量。变量在声明后若不手动定义,编译器将为其赋值为相应的默认值

注意:golang中的变量、方法、结构体等等的名称都推荐使用驼峰命名法,而名字的首字母如果是小写字母则表示在包(package)内可见;而如果是大写字母则表示包外可见。

常量

const var a int = 1

const var (

b int = 2

c string = "Hello World"

)

常量通过关键词const来定义。常量同样有单行声明和合并声明,声明时必须定义,定义后不可修改。

占位符

_ , a = myFunction()

function()函数有两个返回值,第一个返回值赋给_ , 第二个返回值赋给a,此时的 就称做占位符,可以理解为仅仅为了给第一个返回值有位置存放即可,这个返回值我再也不会用到;如果这个返回值之后还可能用到,则不能赋给 ,否则今后无法再使用。

运算符

golang的运算符包括:

算术运算符: + 相加、 - 相减、 * 相乘、 / 相除、 % 求余、 ++ 自增、 -- 自减。

关系运算符: == 检查两个值是否相等、 != 检查两个值是否不相等、 > 检查左边值是否大于右边值、 < 检查左边值是否小于右边值、 >= 检查左边值是否大于等于右边值、 <= 检查左边值是否小于等于右边值

逻辑运算符: && 逻辑 和 运算符、 || 逻辑 或 运算符、 ! 逻辑 非 运算符

位运算符: & 按位与运算符"&"是双目运算符,其功能是参与运算的两数各对应的二进位相与; | 按位或运算符"|"是双目运算符,其功能是参与运算的两数各对应的二进位相或; ^ 按位异或运算符"^"是双目运算符,其功能是参与运算的两数各对应的二进位相异或; << 左移运算符"<> 右移运算符">>"是双目运算符,右移n位就是除以2的n次方,其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。

golang的运算符合其他开发语言是一致的,这里不做更多介绍。

数组

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。

// 形如 var 变量名 [数量] 变量类型

var stuName [20] string

指针

一个指针变量指向了一个值的内存地址。

var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。

类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:

// var var_name *var-type

var stuNameIndex *string

结构体

结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:

//形如 type variable_type struct { …… }

type People struct {

var id int

var name string

}

var people People

people.id = 1

people.name = "Sinclar"

切片

Go 语言切片是对数组的抽象。

Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。

var slice1 []type

//也可以指定长度

var slice1 []type = make([]type, 10)

//也可以简写为

slice1 := make([]type, 10)

条件语句

条件语句有两种,一种是 if……else…… 语句,另一种是 switch 语句,还有一种select语句。

if……else……

if 条件 {

执行代码

} else {

执行代码

}

switch 语句

switch condition {

case condition1:

...

case condition2:

...

default:

...

}

select 语句

这涉及到一些高级语法,本篇先不讲述,我将在下一篇详细解释,感兴趣的同学们可以自己查阅资料先学习一下。

switch语句中没有break语句,golang的语法经过优化后,在某个case执行完毕后就退出switch了,不会再接着往下执行;

如果希望执行了某个case之后接着往下执行,可以在每个case最后使用fallthrough关键字。注意,使用fallthrough关键字后,后面的case是强制执行,无论condition是否为true

for 循环语句

golang的循环语句只有一种。那就是for语句。for语句有几种形式。

标准格式

/*for init; condition; next {

doSomething

}*/

for i:=0; i<20; i++ {

fmt.Println("i is: %d", i)

}

特殊格式

//无限循环

for {

doSomething

}

for true {

doSomething

}

//省略init或next

for ; sum<100; {

sum = sum + 1

}

控制语句

break、continue和goto是用于for语句或switch语句内的控制语句,其用法于c或c++中的用法相似,这里就不再赘述了。

看到这里,大家应该都觉得似曾相识,好像学过的编程语言都有这些东西。所以大家应该不用花太多时间在基础语法上,几分钟就能看完。看完这些基础知识,大家应该可以写出一些简单代码来验证今天的基础语法。

但是,这里也只是讲解了一些基础用法,在接下来的学习中,我们还会遇到更多高级的用法,包括select、channel、方法、切片、范围、集合和接口等内容。

golnag的开发者工具

我现在使用的开发者工具是GoLand。这是一个非常强大的golang开发工具。因此在此我也推荐大家使用GoLand开发工具来开发我们的golang博客系统。

到此这篇关于golang的基础语法和常用开发工具的文章就介绍到这了,更多相关golang常用开发工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

go linux 开发工具,golang的基础语法和常用开发工具详解相关推荐

  1. [基础语法] SEARCH搜索指定字符串详解

    今天遇到一个问题:读取服务器目录返回文件夹信息,如果文件夹不存在就创建,下面是返回的信息 文件夹是以日期.日期的前六位命名的,此例中如果我们直接search 201503,虽然成功,但我们不能判断是不 ...

  2. openresty开发系列13--lua基础语法2常用数据类型介绍

    openresty开发系列13--lua基础语法2常用数据类型介绍 一)boolean(布尔) 布尔类型,可选值 true/false: Lua 中 nil 和 false 为"假" ...

  3. Python基础语法(五)—常用模块和模块的安装和导入

    Python基础语法(五)-常用模块的使用和模块的安装和导入,本文介绍的Python模块有:os.sys.time.datetime.random.pickle.json.hashlib.shutil ...

  4. HiveQL学习笔记(二):Hive基础语法与常用函数

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  5. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

  6. 第一次网页前端培训笔记(Html基础语法和常用标签)

    一.什么是HTML HTML 是用来描述网页的一种语言.HTML 是一种在 Web 上使用的通用标记语言.HTML 允许你格式化文本,添加图片,创建链接.输入表单.框架和表格等等,并可将之存为文本文件 ...

  7. Matplotlib【学习大礼包】数据可视化基础 掌获绘图基础语法与常用参数、设置pyplot的动态rc参数、 绘制散点图、折线图、直方图、饼图

    文章目录 如何查看完整版!!(代码+图片) 第3章 Matplotlib 数据可视化基础 3.1 掌获绘图基础语法与常用参数 3.1.1 掌获pyplot基础语法 1.创建画布与创建子图 2.添加画布 ...

  8. 爬虫的基础架构及常用的工具介绍

    爬虫的基础架构及常用的工具 写在前面 爬虫和页面解析都是实操性非常强的技能,需要分析待爬取的网站和信息,过程中不乏需要很多尝试和调整. 爬虫的基础架构 基础架构方面主要分为 3 个部分,分别是 URL ...

  9. Sniff网络基础原理和软件实现技巧详解

    Sniff网络基础原理和软件实现技巧详解 前言 SNIFF真是一个古老的话题,关于在网络上采用SNIFF来获取敏感信息已经不是什么新鲜事,也不乏很多成功的案例,那么,SNIFF究竟是什么呢? SNIF ...

最新文章

  1. 51单片机编码自学_这是9个月的自学式编码看起来像什么
  2. linux每日命令(31):tar命令
  3. 业务工作流平台设计(九)
  4. Java JSON 之 Xml 转 JSON 字符串
  5. Android Material Design之在RecyclerView中嵌套CardView实现
  6. (转)KMP算法原理讲解及模板C实现
  7. iview组件库 - 穿梭栏设置
  8. UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数...
  9. python中的常见的列表操作及注意事项
  10. 分享一些Java常见的面试题,大厂都爱用
  11. 层次分析法(AHP)介绍
  12. 使用VMware虚拟机搭建Panabit透明网桥环境
  13. C02014010宋明妤信息论作业
  14. Rabbitmq使用优先级队列实现消息插队
  15. 程序员找工作-----人力资源面试题
  16. apollo 阿波罗使用
  17. SpringCloud学习一
  18. 东半球最好的SecureCRT高级教程
  19. YOLOv5-Lite:NCNN+Int8部署和量化,树莓派也可实时
  20. 在Linux和Windows上安装kafka(版本:2.12-2.8.0)

热门文章

  1. win7计算机桌面文件位置更改,win7怎么更改桌面文件夹路径_win7更改桌面文件路径的图文步骤...
  2. vgg16卷积层的计算量_卷积神经网络VGG16参数数量的计算和理解
  3. 高校新闻抓取分析之百度新闻篇---数据清洗解析
  4. IoT 物联网设备该如何选择固件升级 OTA ?
  5. vue vite创建项目的使用(使用技术栈vue3+vuex+router+ts+element plus)
  6. cv::mat的基本操作
  7. idea 切换分支时书签消失解决方案
  8. Geolocation模块管理设备位置信息,用于获取地理位置信息,如经度、纬度等。通过plus.geolocation可获取设备位置管理对象
  9. 开发地图编辑器_使用地图编辑器开发地图
  10. matlab hilbert,谁有MATLAB的m文件Hilbert.m