当前位置: 首页 > news >正文

Go 语言入门指南:基础语法和常用特性解析

什么是Go语言?

Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。它用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致。

Go语言语法与C相近,但功能上有:内存安全,GC(垃圾回收),结构形态及CSP-style并发计算。

Go语言有什么特点和优势?

  • 简单易学,学习曲线平缓,不需要像 C/C++ 语言动辄需要两到三年的学习期。
  • 代码风格统一,提供了一套格式化工具——go fmt。
  • 原生支持并发,使用起来非常简单。
  • 开发效率高,内置了垃圾回收机制,降低了开发者的心智负担,使其拥有像Python、PHP等解释性语言的一样的开发效率。
  • 编译速度明显优于 Java 和 C++,还拥有接近C语言的运行效率以及接近 PHP 的开发效率。
  • 标准库非常稳定并且丰富多样,包括网络、系统、加密、编码、图形等各个方面。
  • 稳定性强。
  • 部署方便。

Go的基础语法与常用特性解析

让我们从最经典的“ hello world” 开始

代码解析:

跟大多数的编程语言一样,在Go语言中首先要定义main包,它定义了一个独立的可执行的程序,而不是一个库,在main里的main 函数 也很特殊,它是整个程序执行时的入口(译注:C系语言差不多都这样)。main函数所做的事情就是程序做的。当然了,main函数一般调用其它包里的函数完成很多工作(如:fmt.Println)。

然后,我们必须告诉编译器,此源文件需要那些包,这就是紧跟在package声明后面的import声明扮演的角色。本程序只用到了一个包,即“fmt”,而其他大多数的程序,则需要用到很多个包。

最后,是调用fmt包里面的Println函数将“hello world”这个内容打印输出。

1.注释

Go语言中的注释和C语言中的注释格式相同,即: 单行注释:以//开头。 多行注释:以/*开头,以/*结尾,通常也称为注释块。

2.包导入

上面的hello world程序已经解释过,可以用import关键字来导入包,这里要补充的是,导入的包可以是标准库的,也可以是自己定义的包。

3.变量声明

在Go语言中,变量声明有两种方式:

1.使用var关键字来声明一个变量。

eg:var age int(声明了一个名为age的整形变量)

2.短声明方式:

eg:age:=25(短声明并初始化一个整数类型的变量age)

这里没有写明age的类型,但是Go语言将会根据你赋予的值来自动判断其类型,这为我们在定义类型时取得了方便。

4.常量声明

在Go语言中,使用const关键字来声明常量。常量在声明时必须进行初始化。

eg:

const pi float64=3.14
const day=1

5.数据类型

Go 语言按类别有以下几种数据类型:

eg:

var sum int             // 声明一个整数类型的变量
var score float64          // 声明一个浮点数类型的变量
var ok bool         // 声明一个布尔类型的变量
var name string         // 声明一个字符串类型的变量
var numbers [10]int                        // 声明一个包含10个整数的数组
var colors []string                       // 声明一个字符串切片
var person map[string]string              // 声明一个字符串到字符串的映射
var student struct {                      // 声明一个结构体name stringage int
}
var ptr *int                              // 声明一个整数类型的指针变量
var add func(int, int) int                // 声明一个函数变量

6.控制流语句

条件语句

循环语句

7.函数:

在Go语言中,使用func关键字定义函数

eg:

func sayHello() {fmt.Println("Hello")
}func add(a, b int) int {return a + b
}

8.结构体

结构体是一种用户自定义的复合类型,用于封装多个字段。

结构体格式如下:

9.方法

可以为结构体定义方法,方法是一种与特定类型关联的函数。

type Rectangle struct {length, width float64
}func (r Rectangle) area() float64 {return r.length * r.width
}func main() {rect := Rectangle{length: 10, width: 5}fmt.Println(rect.area())
}

10.defer语句

defer语句用于延迟函数的执行,它会在当前函数返回之前执行。

func main() {defer fmt.Println("好")fmt.Println("你")
}
// 输出结果:
// 你
// 好

11.并发编程

Go具有内置的并发机制,可以轻松地编写并发程序。关键字go用于启动一个新的goroutine。

func sayHello() {fmt.Println("你")
}func main() {go sayHello()   // 在新的goroutine中执行sayHello函数fmt.Println("好")
}

Final summary

在最后,我想说的是,如果你也想编写高质量的应用程序,我想Go语言应该会是你的不二选择,它天生就是为了高效率和高质量而生的!!!

本文里的代码有什么问题,可请各位大佬指正qwq

最后的最后,给大家安利我自己搭建的人工智能网站:aihub.52chye.cn

http://www.lryc.cn/news/160603.html

相关文章:

  • 20.添加HTTP模块
  • Qemu 架构 硬件模拟器
  • 通过starrocks jdbc外表查询sqlserver
  • ArcGIS 10.5安装教程!
  • ConstraintLayout约束布局
  • 通过pyinstaller将python项目打包成exe执行文件
  • P1068 [NOIP2009 普及组] 分数线划定
  • 应用在汽车新风系统中消毒杀菌的UVC灯珠
  • TOOLLLM: FACILITATING LARGE LANGUAGE MODELS TO MASTER 16000+ REAL-WORLD APIS
  • 【JavaSpring】spring接口-beanfactory和applicationcontext与事件解耦
  • 《深入理解Java虚拟机》——Java内存区域与内存溢出异常
  • 公众号hanniman往期精选
  • 谷粒商城----缓存与分布式锁
  • 【JavaEE进阶】Spring事务和事务传播机制
  • 【Hive】drop table需注意外部表
  • 【2023数学建模国赛】A题定日镜场的优化设计模型建立
  • QT 事件与信号区别
  • [Vue3 博物馆管理系统] 使用Vue3、Element-plus tabs组件构建选项卡功能
  • 【算法专题突破】滑动窗口 - 长度最小的子数组(9)
  • 骨传导与入耳式耳机哪种音质好?该如何选择?
  • 【多线程】Timer任务定时器实现与盲等原子性问题的解决
  • SpringCloud-GetWay 路由网关
  • 使用生成式 AI 增强亚马逊云科技智能文档处理
  • 谈论浏览器内核
  • 电商卖家保障数据隐私和安全用什么安全的浏览器?
  • ECS通过DNAT将C非专线网段并网
  • g++模板显式实例化big file例子
  • Redis 删除策略
  • 自动化运维——ansible (五十二) (01)
  • 渗透测试漏洞原理之---【不安全的反序列化】