手机怎么制作自己的网站,公司页面设计图片,电子商务网站如何设计,什么是网络营销组合策略一、简介及安装教程
1、为什么学习Go#xff1f;
简单好记的关键词和语法#xff1b;更高的效率#xff1b;生态强大#xff1b;语法检查严格#xff0c;安全性高#xff1b;严格的依赖管理#xff0c; go mod 命令#xff1b;强大的编译检查、严格的编码规范和完整的…一、简介及安装教程
1、为什么学习Go
简单好记的关键词和语法更高的效率生态强大语法检查严格安全性高严格的依赖管理 go mod 命令强大的编译检查、严格的编码规范和完整的软件生命周期工具跨平台交叉编程多平台编译异步编程复杂性低易维护Go语言中Channel设计异步程序写起来非常自然语言层面支持并发go关键字协程使得go的并发效率极高严格的语法规范Go的并发、性能、安全性、易于部署等特性使它容易成为“云原生语言”。
Go语言设计之初确定了三大原则简洁性、可读性、功能性。
2、安装教程
安装Go
下载地址 All releases - The Go Programming Language
选择合适的版本进行下载安装。 这里以 .msi 文件为例进行安装教程。
双击 .msi 文件进行下载 等待下载完成。
配置环境变量
在 电脑 属性 高级系统设置 环境变量
添加如下配置 在path中配置如下 配置GOPATH安装相关包时的下载位置 在path中添加GOPATH 配置GOPROXYGo的代理不配置的话下载某些包会失败需要科学上网。 验证是否安装成功
在命令行界面cmd输入 go env 出现以下内容即成功安装。 将 GO111MODULE 设置为 ON
在命令行界面输入
set GO111MODULEon 到此Go下载已经完成。
Go编程工具
这里我使用的是VSCode也可以选择使用Goland下载地址如下
GoLand by JetBrains: More than just a Go IDE
VSCode配置Go的编程环境
在VSCode的插件管理中搜索 Go 下载插件 Hello,World!
// 导入 fmt 包并调用其中的 Println 函数输出 Hello, world!
// 导入类
package main
// 导入 fmt 包
import fmt
// 主函数
func main() {fmt.Println(Hello, world!)
} 二、基础语法
1、变量 变量的标准定义 var 变量名 变量类型 变量占用多少的内存是由变量的类型决定的 // 定义一个变量name类型为string然后通过fmt.Scanln()函数从控制台读取用户输入的姓名并将其赋值给name变量。
// 最后通过fmt.Println()函数输出欢迎语其中包含用户输入的姓名。
package mainimport fmtfunc main() {var name stringfmt.Println(Please enter your name:)fmt.Scanln(name)fmt.Println(Hello, name !)
} 2、打包 将写好的程序进行发布需要进行build操作。 golang可以打包成各个平台的可执行程序 // 打包 windows 执行程序
set GOOSwindows
set GOARCHamd64
go build -o bin/app.exe main.go// 打包 Linux 执行程序
set GOOSlinux
set GOARCHamd64
go build -o bin/app main.go// 打包 mac 执行文件
set GOOSdarwin
set GOARCHamd64
go build -o bin/app_mac main.go
3、数据类型 go的数据类型分为以下几种 数值类型整型 和 浮点型 布尔类型bool 值为 true 和 false 字符类型byte (底层uint8)和 rune (int32) 字符串类型string 其他类型数组、指针、结构体、Channel、函数、切片、any、map 类型别名
// 类型别名给类型定义一个名称
type my_int int
// 这里是给int定义一个别名为my_int1数值类型 go提供有符号整型和无符号整型两种类型 有符号整型int、int8、int16、int32、int64 无符号整型uint、uint8、uint16、uint32、uint64、uintptr 注意这里的8、16、32是位 无符号整型 uintptr 是用于存放指针的没有具体的bit大小但是足够容纳指针 uintptr 类型在底层编程时才需要特别是在Go与C的函数库或操作系统接口交互的地方 Go语言支持两种浮点型数据float32 和 float64 输出时进行限制位数进行输出 如fmt.print(%.5f,a) 即保留a的小数点后5位 2布尔类型 布尔类型只有 true 和 false 且不能参与任何计算和类型转换 3字符类型 Go语言的字符类型有2种 uint8类型或者叫byte型代表ASCII码的一个字符 rune类型代表一个Unicode字符当需要处理中文、日文或者其他复合字符时需要用到rune类型。rune类型等价于int32类型。 ASCII定义128个字符Unicode是ASCII的超集。 4类型推断 类型推断可以使用 : 操作符进行变量声明和赋值Go会根据右侧的值自动推断变量类型例如y : 5。 零值 未初始化的变量会被赋予零值数字类型为0布尔类型为false字符串类型为空字符串等。 多变量声明 可以同时声明多个变量例如var a, b, c int。 package mainimport (fmt
)func main() {// 单变量赋值var a int 1// 多变量赋值var b, c int 2, 3// 多变量定义并赋值var (d int 4e int 5f string world)// 简化赋值g : hello// 打印变量值fmt.Println(a, b, c, d, e, f, g)
} 5常量 常量声明 使用const关键字声明一个常量例如const pi 3.14159。 常量赋值 常量的值在声明时必须被赋值一旦赋值后不可修改。 枚举常量 可以使用一组常量来模拟枚举例如 const {a 1b 2
} 类型指定 常量的类型也可以被指定例如const speed int 300000。 常量表达式 常量可使用表达式计算例如const secondsInHour 60 * 60。 无类型常量 常量可以是无类型的根据上下文自动推断类型。例如const x 5会被推断为整数类型。 6类型转换 基本类型转换 在Go中基本类型可以互相转换类型转换用于将一个数据类型转换成另一种数据类型。 显示类型转换 在Go中使用强制转换将一种数据类型转换成另一种数据类型。 语法destinationType(expression)例如float(10) 不兼容类型的转换 在Go中不兼容的数据类型之间不能转换 类型别名的转换 如果有类型别名转换时注意别名的兼容性 7运算符 算数运算符 加法 - 减法 * 乘法 / 除法 % 取模求余 赋值运算符 赋值 加法赋值 - 减法赋值 * 乘法赋值 / 除法赋值 % 取模赋值 逻辑运算符 逻辑与AND || 逻辑或OR 逻辑非NOT 比较运算符 等于 小于等于 大于等于 ! 不等于 小于 大于 位运算符 按位与AND | 按位或OR ^ 按位异或XOR 左移 右移 其他 取地址 * 指针运算符 自增 -- 自减 按位清除运算符— ^ 将某些位上的位清零即将指定位置上的位设置为0用于处理二进制 对于每个位右侧的操作数对应位为0则结果与左侧数相同 对于每个位右侧的操作数对应位为1则结果被强制设置为0 package mainimport fmtfunc main() {a : 0b11001100b : 0b00110011result : a ^ bfmt.Printf(结果为%08b\n, result)fmt.Println(结果为, result)
}4、函数
一个函数包含函数名、参数列表、返回值类型和函数体
如写一个求和函数add
// 传入值为ab都为int类型返回也为int类型该函数的返回值为a b
func add(a int, b int) int {return a b
}
函数可以有0个或多个参数Go可以有0个、1个、多个返回结果
多个返回值
// 该函数有两个返回值都为int类型
func moreresult(a int, b int) (int, int){// a , b 操作return int1, int2
}
命名返回值
// 命名返回值在函数中为局部变量可以进行使用
func namefunc(width, heigh int) (area int){area width * heighreturn
}
// 该函数返回为 area 值为 width * heigh
空返回语句
// 空返回
func moreresult(a int, b int) (x, y int){x ay breturn
}
按值传递
// 写一个函数返回i累加
func incrementi(i int) {i
}
5、条件语句
// 条件语句有两种if语句和switch语句// if语句
if 条件{// 内容
} else if 条件 {// 内容
} else {// 内容
}// switch语句
switch 语句值 {case 值1// 内容case 值2// 内容...default// 内容
}