目录
一、什么是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的易用性,创造了一种既适合系统级编程又能满足大规模服务端开发需求的语言。然而,它并不是这两种语言特性的简单叠加,而是在这两者之间寻找了一个新的平衡点。