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

[Go语言快速上手]初识Go语言

目录

一、什么是Go语言

二、第一段Go程序

1、Go语言结构

注意

2、Go基础语法

关键字

运算符优先级 

三、Go语言数据类型

示例

小结


一、什么是Go语言

        Go语言,通常被称为Golang,是一种静态类型、编译型的计算机编程语言。它由Google的Robert Griesemer、Rob Pike及Ken Thompson等设计,并于2009年正式发布。Go语言的设计目标是为了提高开发效率和运行效率,在处理并发性方面尤其出色,它内置了对并发的支持,使得编写高并发程序变得简单。

Go语言的特点包括:

  • 简洁性:语法清晰简洁,减少了代码中的冗余部分。
  • 性能:由于是编译型语言,其执行速度接近于传统的编译型语言如C或C++。
  • 并发支持:通过goroutines和channels机制简化了并发编程。
  • 标准库:提供了丰富的标准库,使得开发者可以快速构建网络服务和其他应用。
  • 工具链:拥有强大的工具链支持,例如用于依赖管理的"go mod"以及测试框架等。

与C++相比,Go语言的设计更加现代,简化了很多C++中复杂的特性,同时提供更好的开发体验和更高的生产率。C++是一种功能强大且灵活的语言,支持面向对象编程、泛型编程以及过程化编程,但是它的学习曲线较陡峭,且容易出现内存管理和类型安全方面的问题。

Python则是一种解释型的高级编程语言,以简洁明了的语法著称,非常适合快速开发以及作为脚本语言使用。Python广泛应用于科学计算、Web开发、数据分析等领域,而且拥有庞大的第三方库生态系统。相比于Python,Go语言在执行效率上要高得多,但在易用性和开发速度上可能不如Python。

Go语言介于C++提供的底层控制能力和Python的高级抽象之间,旨在提供一种平衡点,即保持高性能的同时也易于编写和维护。

二、第一段Go程序

对于Go语言的学习,推荐去菜鸟教程学习基本的使用(适用于有编程基础的同学)

1、Go语言结构

Go 语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

第一段go程序

package main //package main 定义了包名

import "fmt" //告诉 Go 编译器这个程序需要使用 fmt 包

func main() { //main 函数是每一个可执行程序所必须包含的
	fmt.Println("hello world") //可以将字符串输出到控制台,并在最后自动增加换行字符
	fmt.Print("hello golang")
}

运行后在终端输出

注意

1.需要注意的是 { 不能单独放在一行,否则在运行时会产生错误

2.Go语言允许你在每一行的末尾省略分号,这与一些其他语言(如Java)不同。虽然Go编译器会自动插入分号,但良好的习惯还是应该保持每一行逻辑完整。

3.go语言import了一个包但是没有使用会报错,(如果使用IDE,在本地IDE中会自动删除没有使用的包,同理也会自动添加使用的包)

我们还可以使用 go build 命令来生成二进制文件

 

2、Go基础语法

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。(这些概念与其他编程语言类似)

在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。

如果你打算将多个语句写在同一行,它们则必须使用 ; 

关键字

运算符优先级 

go中的运算符与C/C++中大差不差,下面是运算符优先级(由上至下代表优先级由高到低)

三、Go语言数据类型

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

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

声明变量的一般形式是使用 var 关键字:

package main //package main 定义了包名
import "fmt"

func main() { //main 函数是每一个可执行程序所必须包含的
	var a string = "hello "  //声明格式
	fmt.Print(a)
	var b = "world"   //自动类型推断
	fmt.Print(b)
	var c, d int= 1, 2 //一次声明多个变量
	fmt.Println(c, d)
}

如果不初始化默认零值

package main

import "fmt"

func main() {
	var i int
	var f float64
	var b bool
	var s string
	fmt.Printf("%v %v %v %q\n", i, f, b, s)
}

 

示例

下面是一个使用示例:

package main

import (
	"fmt"
)

func main() {
	// 声明并初始化一个布尔型变量
	var isCompleted bool = true
	// 使用简短声明 :=
	isRunning := false

	// 输出布尔变量
	fmt.Println("isCompleted:", isCompleted)
	fmt.Println("isRunning:", isRunning)

	// 声明并初始化一个整型变量
	var count int = 10
	// 使用简短声明 :=
	age := 25

	// 输出整型变量
	fmt.Println("count:", count)
	fmt.Println("age:", age)

	// 声明并初始化一个浮点型变量
	var temperature float64 = 23.5
	// 使用简短声明 :=
	weight := 70.5

	// 输出浮点型变量
	fmt.Println("temperature:", temperature)
	fmt.Println("weight:", weight)

	// 声明并初始化一个字符串变量
	var name string = "Alice"
	// 使用简短声明 :=
	greeting := "Hello, World!"

	// 输出字符串变量
	fmt.Println("name:", name)
	fmt.Println("greeting:", greeting)

	// 对数字类型进行算术运算
	result := count + int(weight)
	fmt.Println("result of addition:", result)

	// 字符串拼接
	fullName := name + " " + "Smith"
	fmt.Println("fullName:", fullName)

	// 使用字符串格式化输出
	fmt.Printf("%s is %f years old.\n", name, float64(age))
}

小结

以上就是一些Go语言的简单使用,如果有其他语言编程基础的话很容易就能上手,因为他非常的简洁,Go语言的设计目标是在性能和生产力之间找到一个平衡点,从而创建一种适合大规模系统开发的语言。

尽管Go语言在某些方面受到了C++的影响,比如C风格的语法,但它并不是C++的超集,而是有选择性地吸取了C++的优点,并抛弃了一些复杂和难以掌握的部分。同时,Go语言的设计也考虑到了Python等现代语言的生产力优势,比如简洁的语法、强大的标准库等,但又避免了Python在性能上的劣势。

总的来说,Go语言试图融合C++的高效性和Python的易用性,创造了一种既适合系统级编程又能满足大规模服务端开发需求的语言。然而,它并不是这两种语言特性的简单叠加,而是在这两者之间寻找了一个新的平衡点。


http://www.kler.cn/news/329211.html

相关文章:

  • 电脑加密机的基本功能与模块
  • Python-o365:提升办公效率的利器
  • springboot系列--web相关知识探索二
  • Python: 3.13.0新特性
  • 想入职网络安全?真实面试--渗透测试工程师(一)!(全网独一份)
  • 【Matlab元胞自动机】《高速公路人工—自动驾驶混行交通流临界特征研究》
  • SpringMVC源码-SpringMVC源码请求执行流程及重点方法doDispatch讲解
  • C++的vector优化
  • 【Python语言初识(六)】
  • 无人机在救灾方面的应用!
  • 闯关训练三:Git 基础知识
  • 「空间智能」跨越维度壁垒 - 构筑AI驱动的XR元宇宙
  • leetcode704--二分查找(二分查找的两种写法)
  • 【web安全】——XSS漏洞
  • 【递归】9. leetcode 104 二叉树的最大深度
  • 位运算(4)_丢失的数字
  • React 的 useId 怎么使用
  • C#参数数组params的使用方法
  • UDP校验和计算及网络中的校验和机制
  • Arthas sc(查看JVM已加载的类信息 )
  • 构建electron项目
  • SpringBoot驱动的墙绘艺术在线展示平台
  • 【Linux】几种常见配置文件介绍
  • 英语词汇小程序小程序|英语词汇小程序系统|基于java的四六级词汇小程序设计与实现(源码+数据库+文档)
  • smb文件夹共享设置
  • 软件测试——Python和UnitTest框架
  • 【Router】路由功能之MAC地址过滤(MAC Filter)功能介绍及实现
  • 用友U8-CRM fillbacksettingedit.php SQL注入复现
  • 【C++】多态,虚函数,重载,重写,重定义,final,override,抽象类,虚函数表,动态绑定,静态绑定详解
  • Web安全 - 路径穿越(Path Traversal)