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)
交换两个变量
Go 复制代码 1 var c1,c2 = 2,10 2 c1,c2 = c2,c1 //10,2 3 fmt.Println(c1,c2)
空白标识符_
Go 复制代码 1 _,c2 = 10,2 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 }