当前位置:首页 > 文章列表 > Golang > Go教程 > golang的基础语法和常用开发工具详解

golang的基础语法和常用开发工具详解

来源:脚本之家 2023-01-14 20:37:54 0浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《golang的基础语法和常用开发工具详解》,主要介绍了工具、语法,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

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

<h3>特殊格式</h3>

<pre class="brush:plain;">
//无限循环
for {
 doSomething
}
for true {
 doSomething
}
//省略init或next
for ; sum

<h3>控制语句</h3>
<p>break、continue和goto是用于for语句或switch语句内的控制语句,其用法于c或c++中的用法相似,这里就不再赘述了。</p>
<p>看到这里,大家应该都觉得似曾相识,好像学过的编程语言都有这些东西。所以大家应该不用花太多时间在基础语法上,几分钟就能看完。看完这些基础知识,大家应该可以写出一些简单代码来验证今天的基础语法。</p>
<p>但是,这里也只是讲解了一些基础用法,在接下来的学习中,我们还会遇到更多高级的用法,包括select、channel、方法、切片、范围、集合和接口等内容。</p>
<h2>golnag的开发者工具</h2>
<p>我现在使用的开发者工具是GoLand。这是一个非常强大的golang开发工具。因此在此我也推荐大家使用GoLand开发工具来开发我们的golang博客系统。</p>
<p>今天关于《golang的基础语法和常用开发工具详解》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!</p>
版本声明
本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
详解Go语言的context包从放弃到入门详解Go语言的context包从放弃到入门
上一篇
详解Go语言的context包从放弃到入门
golang语言如何将interface转为int, string,slice,struct等类型
下一篇
golang语言如何将interface转为int, string,slice,struct等类型
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    511次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    498次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • TextIn智能文字识别:高效文档处理,助力企业数字化转型
    TextIn智能文字识别平台
    TextIn智能文字识别平台,提供OCR、文档解析及NLP技术,实现文档采集、分类、信息抽取及智能审核全流程自动化。降低90%人工审核成本,提升企业效率。
    5次使用
  • SEO  简篇 AI 排版:3 秒生成精美文章,告别排版烦恼
    简篇AI排版
    SEO 简篇 AI 排版,一款强大的 AI 图文排版工具,3 秒生成专业文章。智能排版、AI 对话优化,支持工作汇报、家校通知等数百场景。会员畅享海量素材、专属客服,多格式导出,一键分享。
    5次使用
  • SEO  小墨鹰 AI 快排:公众号图文排版神器,30 秒搞定精美排版
    小墨鹰AI快排
    SEO 小墨鹰 AI 快排,新媒体运营必备!30 秒自动完成公众号图文排版,更有 AI 写作助手、图片去水印等功能。海量素材模板,一键秒刷,提升运营效率!
    6次使用
  • AI Fooler:免费在线AI音频处理,人声分离/伴奏提取神器
    Aifooler
    AI Fooler是一款免费在线AI音频处理工具,无需注册安装,即可快速实现人声分离、伴奏提取。适用于音乐编辑、视频制作、练唱素材等场景,提升音频创作效率。
    6次使用
  • 易我人声分离:AI智能音频处理,一键分离人声与背景音乐
    易我人声分离
    告别传统音频处理的繁琐!易我人声分离,基于深度学习的AI工具,轻松分离人声和背景音乐,支持在线使用,无需安装,简单三步,高效便捷。
    8次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码