【go入门(一)】变量与运算(230912)
文章目录
1.go语言环境配置与安装
直接看这一篇文章
2.第一个go语言程序(默认使用goland)
创建一个mian.go文件
书写以下代码,并run,就可以得到hello world
经典语句了。
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
这里有一些知识点需要说明:
1.go语言默认运行入口是从main
包下面的main
函数开始执行的。
2.如果要通过命令行来运行go程序,有两种方式:
go run main.go XX.go XXX.go
go build main.go XX.go XXX.go# 这会生成一个可执行文件
./main
3.go语言基本数据类型
序号 | 类型和描述 |
---|---|
1 | 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 |
2 | 数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 |
3 | 字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。 |
4 | 派生类型: 包括:(a) 指针类型(Pointer)(b) 数组类型© 结构化类型(struct)(d) Channel 类型(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型 |
4.go语言声明变量与常量
4.1变量的声明
**go语言申明变量有两种方式:**①强语言类型赋值方式(C风格)。②自动推断方式(弱语言赋值风格)
强类型定义语法:
var 变量名 类型
var 变量名 类型 = 初值
弱类型定义方式(自动推断方式):
变量名 := 值(注意推断方式必须给定初值才能自动推断)
**※:**虽然go语言能够自动推断出变量类型,但是go语言变量类型一旦确定,不能再次更改该语言的变量类型(如整型不能变成字符型)
下面通过一个案例来演示变量的定义
package main
import "fmt"
func main() {
// 1. 强类型赋值方式
var int1 int
var int2 int = 2
var str1 string
var flag bool
var str string = "nihao"
var f1 float64 = 1.1
fmt.Println(int1) //0
fmt.Println(int2) //2
fmt.Println(str1) // ''
fmt.Println(flag) //false
fmt.Println(str) // 'nihao'
fmt.Println(f1) //1.1
// 2. 自动推断模式
int3 := 3
fmt.Println(int3) //3
// 试探自动推断是否像python一样更改变量类型
int3 = "3"
/*
# command-line-arguments
.\main.go:25:9: cannot use "3" (untyped string constant) as int value in assignment
*/
}
变量定义时强类型
定义可以不用赋予初值,但是弱类型
方式必须赋予初值,两种赋值方式都不能改变原有的变量类型
4.2 常量的定义
常量的定义只有一种,强类型声明方式,道理很简单,用强类型才知道你是赋予的常量而不是变量。
定义语法:
const 变量名 类型 = 值(肯定要给值,不然此常量毫无意义)
4.3 多变量同时定义、枚举和iota计数器
go
语言可以像python一样一次给多个变量进行赋值,像这样:
//强类型定义
var var1 ,var2 [type](可以省略) = value1,value2,value3
//省略的话右边可以赋值不同的类型的变量
//自动推断
var1,var2 := val1,val2
同样的,常量也一次性定义多个。
const a,b,c,d = false,1,1.0,"hello"
同时,常量可作为枚举值
package main
import "fmt"
func main() {
const (
Zero = 0
One = 1
Male = 2
)
fmt.Println(Zero)
fmt.Println(One)
fmt.Println(Male)
}
--console---
0
1
2
最后我们来说说iota自增器,若使用iota自增器来定义枚举量**,那么iota后的枚举量会自动加一,赋值其他常量值的则会依次原样进行传递,知道重新使用iota后才会继续进行递增,从iota不再增加的值开始继续自增**
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a, b, c, d, e, f, g, h, i)
}
5.总结
go语言在变量赋值这一块可以做到和python
一样的简洁,同时也保证了具有c
、java
等强类型语言的严谨性。这种能屈能伸的语言很值得学习。
1
h = iota //7,恢复计数
i //8
)
fmt.Println(a, b, c, d, e, f, g, h, i)
}
## 5.总结
go语言在变量赋值这一块可以做到和`python`一样的简洁,同时也保证了具有`c`、`java`等强类型语言的严谨性。这种能屈能伸的语言很值得学习。