写在前面
狂神开了一个Go的班,作为之前学过狂神Java,且有意向学Go的人,在有钱后第一时间去报了班。最近这段时间,Go语言的热度比起Java要高得多。一是为了给自己未来多一条路子,一是出于自己的兴趣爱好,正式开始学习Go。
定义变量
那么作为已经学习过众多语言的人,一些很基础的诸如配置环境,下载IDE等操作就不再记录了。直接开始学习Go的语法。
首先是变量的定义。Go是强类型语言,采用了与kotlin类似的变量后置,使用var来定义变量,并在变量名后声明类型,如下:
var name string
var age int
当然,我们可以在定义变量的时候直接赋值:
var name string = "wushenjiang"
不同于Java语言,我们可以一次性同时定义多个变量:
var (
addr string
phone int
)
语法糖——:=
那么有人可能会有疑惑,这个var关键字有点多余呀。自然,Go语言提供了语法糖
来定义变量:
name := "wushenjiang"
语法糖——交换变量
Go语言会提供很多的语法糖来简化我们的操作,比如一个最经典的交换变量a与b,我们在java语言或者C语言等可能要这样写:
int a,b,temp;
temp = a;
a = b;
b = temp;
很明显,这是非常不符合直觉的。在我初学编程时,为了理解交换变量都用了很长时间。Go语言对此提供了语法糖:
// 变量交换 语法糖
var a int = 100
var b int = 200
fmt.Println("a=", a, "b=", b)
b, a = a, b
fmt.Println("交换后a=", a, "b=", b)
类似的操作在Python语言里也可以这么写。采用这种写法,很明显更符合直觉。
匿名变量
这里提前引入了一个概念,即go的函数是可以返回多个值的,如:
func test() (int, int) {
return 100, 200
}
那么比如说我们可能不需要其中某一个返回值要咋办呢?我们可以把他扔掉,直接不使用:
// 只想要test返回的第一个结果 使用匿名变量
a, _ = test()
同理,我们只想要第二个也可以这样写:
_,b = test()
定义常量
有了变量,自然也有常量。定义常量可以是显式定义,即自己指定类型:
// 常量 显式定义
const URL string = "wushenjiang.com"
也可以不指定类型,让编译器自动推断:
// 常量 隐式定义
const URL1 = "wushenjiang"
自然,也存在一些特殊的常量,如iota,这个常量是用来进行计数的,如下:
// 在一组const中 会自动+1
const (
a = iota
b = iota
c = iota
// 如果在定义const的时候 下面的常量没有赋值 默认沿用上面一个常量定义的赋值
d = 0
e = iota
)
fmt.Println(a, b, c, d, e)
我们打印结果,可以看到:
咱们的d变量是0,但e还是变成了4,因为他是计数器,每多定义一个常量就会自动+1。这让我想起了数据库中的自增主键。大概后面可能会用到吧。
常见的基本数据类型
编程语言会有很多数据类型,这大家都知道。这里就大概过一下。
bool
布尔类型,只有true与false,如下:
// 定义变量 bool 布尔类型的定义
var b1 bool
var b2 bool
b1 = true
b2 = false
int
对于int类型,go语言提供了int8,int16,int32,int64以及无符号类型的uint系列:
int就不需要介绍了,非常常见。这里要注意的点是,我们默认使用int来定义时,按照源码里的介绍,最少为int32。取决于具体的操作系统:
float
对于float类型,需要指定是float64还是float32:
var f1 float64
f1 = 3.14
var f2 float32
f2 = 5
一般使用float64即可
byte
byte,即字节。在go中他其实就是uint8类型:
string
字符串类型,更常见了。直接使用:
var str string
str = "Hello,World"
if与switch
if
对于if的使用,要注意的是Go语言强行规定了格式,不过我们在使用goland工具书写时会自动帮我们使用要求的格式:
var num int = 15
if num > 10 {
fmt.Println("num > 10")
}
var score int = 90
if score > 60 {
fmt.Println("has succeed")
} else if score > 70 {
fmt.Println("excellent")
}
switch
go语言的switch,新增了一个fallthrough的关键字,会强制执行下面的case语句,如下代码:
// 穿过
a := false
switch a {
case false:
fmt.Println("1") // 默认只会输出1
fallthrough // 一旦使用了fallthrough 则会强制执行下面的case语句
case true:
fmt.Println("2")
fallthrough
case false:
fmt.Println("3")
fallthrough
case true:
fmt.Println("4")
fallthrough
default:
fmt.Println("0")
}
运行发现:
其实就是直接无视了case一路穿透了下来。
for循环
for循环也十分简单:
// for
for i := 0; i <= 10; i++ {
fmt.Println(i)
}
// 1加到10
sum := 0
for i := 1; i <= 10; i++ {
sum += i
}
fmt.Println(sum)
// 简便写法 for里只写结束条件 == while
i := 0
for i <= 5 {
i++
}
go语言没有while循环,也没有do...while循环。因为都可以被for循环所替代。
总结
今天主要是学习了一些基本语法。考虑到自己的基础,省略了很多细枝末节。主要是用来给自己学习的知识进行系统的回顾。
标签:Println,语言,int,fmt,基础,var,Go,定义 From: https://www.cnblogs.com/wushenjiang/p/17181228.html