Go 语言环境搭建
Go 语言反对以下零碎 Linux,FreeBSD,Mac OS,Windows。
Go 官网安装包地址:https://golang.org/dl/。
Google 安装包地址:https://golang.google.cn/dl/。
测试是否装置胜利
E:\Go>go version
go version go1.16.2 windows/amd64
Go 我的项目的组成部分:
- 包申明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 正文
新建 test.go, 切换到文件目录,执行
go run test.go
运行 test.go 文件
package main
import "fmt
// 1. 引入 fmt 包(实现了格式化 IO(输出 / 输入))func main() {
/*
1.func main 是程序开始执行的函数。2. 如果有 init() 函数则会先执行该函数
*/
fmt.Println("Hello, World!")
}
1.package main 定义了包名。
2. 在源文件中非正文的第一行指明这个文件属于哪个包,如:package main。
3.package main 示意一个可独立执行的程序,每个 Go 应用程序都蕴含一个名为 main 的包。
生成生成二进制文件
go build test.go
格式化字符串 fmt.Sprintf
Go 语言中应用 fmt.Sprintf 格式化字符串并赋值给新串
package main
import "fmt"
func main(){
// %d 示意整型数字,%s 示意字符串
var code=11
var date="2020-12-31"
var url="code=%d&date=%s"
var target=fmt.Sprintf(url,code,date)
fmt.Println(target)
}
//code=11&date=2020-12-31
数据类型
布尔型:true 或者 false。
数字类型: 整型 int 和浮点型 float32、float64。
字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。
派生类型:
- (a) 指针类型(Pointer)
- (b) 数组类型
- (c) 结构化类型 (struct)
- (d) Channel 类型
- (e) 函数类型
- (f) 切片类型
- (g) 接口类型(interface)
- (h) Map 类型
// 布尔型
var a bool = true
fmt.Println(a)
// 数字类型:var b int = 1
fmt.Println(b)
// 字符串类型:var c string = "躲躲"
fmt.Println(c)
//nli 类型 nil 的意思是无,或者是零值。//nil 是预约义的标识符,代表指针、通道、函数、接口、映射或切片的零值,也就是预约义好的一个变量
var a1 *int;
var a2 []int;
var a3 map[string] int;
var a4 chan int;
var a5 func(string) int;
var a6 error; // error 是接口
fmt.Println(a1,a2,a3,a4,a5,a6)
// 省略 var, 留神 := 左侧如果没有申明新的变量,就产生编译谬误
//var value int
//value:='132' // 报错 syntax error: unexpected :=, expecting }
/*
value1 :=21 // 不会报错
fmt.Println(value1)
多变量申明
var b1,b2,b3 = 1,2,3
fmt.Println(b1,b2,b3)
b4,b5,b6 :=4,5,6 // 不应该是曾经申明的,否则会报错
fmt.Println(b4,b5,b6)
申明全局变量
var (
b7 int
b8 int
b9 int
)
fmt.Println(b7,b8,b9)
替换两个变量
var c1,c2 = 2,10
c1,c2 = c2,c1 //10,2
fmt.Println(c1,c2)
空白标识符_
_,c2 = 10,2
fmt.Println(c2)
语言常量
常量是一个简略值的标识符,在程序运行时,不会被批改的量。常量中的数据类型只能够是布尔型、数字型(整数型、浮点型和复数)和字符串型。
const identifier [type] = value
// 显式类型定义
const d1 string = "123"
// 隐式类型定义
const d2 = "1234"
多个雷同的类型能够定义为:
// 多个雷同的类型能够定义为:const name1,name2 = "詹","躲躲"
fmt.Println(d1,d2,name1,name2) //123 1234 詹 躲躲
常量利用
const WIDTH,HEIGHT = 10,20
var area int
area = WIDTH*HEIGHT
fmt.Printf("面积为: %d",area) // 面积为:200
常量枚举
const (
Unknown = 0
Female = 1
Male = 2
)
fmt.Println(Unknown,Female,Male)
内置函数 len(), cap(), unsafe.Sizeof() 函数
const (
az = "abc"
bz = len(az)
cz = unsafe.Sizeof(a)
)
fmt.Println(a,b,c)
iota,非凡常量
能够认为是一个能够被编译器批改的常量。iota 在 const 关键字呈现时将被重置为 0(const 外部的第一行之前),const 中每新增一行常量申明将使 iota 计数一次 (iota 可了解为 const 语句块中的行索引)。
const (
f1 = iota // 计数 iota+=1 --->0
f2 // 计数 iota+=1 --->1
f3 = iota // 计数 iota+=1 --->2
f4 = "12" // 独立值 --->12
f5 = true // 独立值 --->true
f6 = 100 // 独立值 --->100
f7 = iota // 计数 iota+=1 --->6
)
fmt.Println(f1,f2,f3,f4,f5,f6,f7) //0 1 2 12 true 100 6
算术运算符
var g1,g2 = 10,20
// 加法
fmt.Println(g1+g2) //30
// 减法
fmt.Println(g1-g2) //-10
// 乘法
fmt.Println(g1*g2) //200
// 除法
fmt.Println(g1 / g2) //0
// 求余
fmt.Println(g1%2) //0
// 自增
g1++
fmt.Println(g1) //11
// 自减
g1--
fmt.Println(g1) //10
关系运算符
fmt.Println(123==23) //false
fmt.Println(123>23) //true
fmt.Println(123<23) //false
fmt.Println(123!=23) //true
逻辑运算符
var h1 bool = true
var h2 bool = false
fmt.Println((h1 && h2)) //false
fmt.Println((h1 || h2)) //true
fmt.Println(!(h1 && h2)) //true
运算符优先级
/*
优先级 运算符
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||
*/
条件判断
var i = 2
if i>1 {fmt.Println("返回真")
}else{fmt.Println("返回假")
}
switch 语句
var grade string = "A"
var score int = 90
switch score {
case 90: grade ="A"
case 80: grade ="B"
case 70: grade ="C"
case 60: grade ="D"
default: grade ="D-"
}
switch grade {
case "A":
fmt.Println("你的问题为:优良")
case "B":
fmt.Println("你的问题为:良好")
case "C":
fmt.Println("你的问题为:良好")
case "D":
fmt.Println("你的问题为:及格")
default:
fmt.Println("你的问题为:不及格")
}
// 你的问题为:优良
//fallthrough
var j bool = true
switch j{
case true:
fmt.Println(true) //true
fallthrough
case false:
fmt.Println(false) //false
fallthrough
case true:
fmt.Println(true) //true
fallthrough
default:
fmt.Println(false) //false
}
元气满满的一天。今天持续打卡,持续开启 GO 之旅。
本文正在参加「掘金 2021 春招闯关流动」, 点击查看 流动详情