简单好记的关键词和语法;更高的效率;生态强大;语法检查严格,安全性高;严格的依赖管理, go mod 命令;强大的编译检查、严格的编码规范和完整的软件生命周期工具;跨平台交叉编程,多平台编译;异步编程复杂性低,易维护,Go语言中Channel设计,异步程序写起来非常自然;语言层面支持并发,go关键字(协程)使得go的并发效率极高;严格的语法规范;Go的并发、性能、安全性、易于部署等特性,使它容易成为"云原生语言"。
// 定义一个变量name,类型为string,然后通过fmt.Scanln()函数从控制台读取用户输入的姓名,并将其赋值给name变量。
// 最后通过fmt.Println()函数输出欢迎语,其中包含用户输入的姓名。
package main
import "fmt"
func main() {
var name string
fmt.Println("Please enter your name:")
fmt.Scanln(&name)
fmt.Println("Hello, " + name + "!")
}
2、打包
将写好的程序进行发布,需要进行build操作。
golang可以打包成各个平台的可执行程序
Go复制代码
// 打包 windows 执行程序
set GOOS=windows
set GOARCH=amd64
go build -o bin/app.exe main.go
// 打包 Linux 执行程序
set GOOS=linux
set GOARCH=amd64
go build -o bin/app main.go
// 打包 mac 执行文件
set GOOS=darwin
set GOARCH=amd64
go build -o bin/app_mac main.go
3、数据类型
go的数据类型分为以下几种:
数值类型:整型 和 浮点型
布尔类型:bool ,值为 true 和 false
字符类型:byte (底层uint8)和 rune (int32)
字符串类型:string
其他类型:数组、指针、结构体、Channel、函数、切片、any、map
类型别名
Go复制代码
// 类型别名,给类型定义一个名称
type my_int int
// 这里是给int定义一个别名,为my_int
package main
import (
"fmt"
)
func main() {
// 单变量赋值
var a int = 1
// 多变量赋值
var b, c int = 2, 3
// 多变量定义并赋值
var (
d int = 4
e int = 5
f string = "world"
)
// 简化赋值
g := "hello"
// 打印变量值
fmt.Println(a, b, c, d, e, f, g)
}
无类型常量: 常量可以是无类型的,根据上下文自动推断类型。例如,const x = 5会被推断为整数类型。
(6)类型转换
基本类型转换
在Go中基本类型可以互相转换,类型转换用于将一个数据类型转换成另一种数据类型。
显示类型转换
在Go中,使用强制转换,将一种数据类型转换成另一种数据类型。
语法:destinationType(expression),例如,float(10)
不兼容类型的转换
在Go中不兼容的数据类型之间,不能转换
类型别名的转换
如果有类型别名,转换时,注意别名的兼容性
(7)运算符
算数运算符:
加法
减法
* 乘法
/ 除法
% 取模(求余)
赋值运算符:
= 赋值
+= 加法赋值
-= 减法赋值
*= 乘法赋值
/= 除法赋值
%= 取模赋值
逻辑运算符
&& 逻辑与(AND)
|| 逻辑或(OR)
! 逻辑非(NOT)
比较运算符:
== 等于
<= 小于等于
>= 大于等于
!= 不等于
< 小于
> 大于
位运算符:
& 按位与(AND)
| 按位或(OR)
^ 按位异或(XOR)
<< 左移
>> 右移
其他:
& 取地址
* 指针运算符
++ 自增
-- 自减
按位清除运算符--- &^
将某些位上的位清零,即将指定位置上的位设置为0,用于处理二进制
对于每个位,右侧的操作数对应位为0,则结果与左侧数相同
对于每个位,右侧的操作数对应位为1,则结果被强制设置为0
Go复制代码
package main
import "fmt"
func main() {
a := 0b11001100
b := 0b00110011
result := a &^ b
fmt.Printf("结果为:%08b\n", result)
fmt.Println("结果为:", result)
}
4、函数
一个函数包含函数名、参数列表、返回值类型和函数体
如,写一个求和函数add
Go复制代码
// 传入值为a,b都为int类型,返回也为int类型,该函数的返回值为a + b
func add(a int, b int) int {
return a + b
}
函数可以有0个或多个参数,Go可以有0个、1个、多个返回结果
多个返回值
Go复制代码
// 该函数有两个返回值,都为int类型
func moreresult(a int, b int) (int, int){
// a , b 操作
return int1, int2
}