数据类型
Golang 支持多种数据类型,包括布尔型,int, float(float32, float64),字符串类型,还有一系列的派生类型
Golang 没有long long和double类型,取而代之的是(int64 和 float64)
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:15:49
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var intNum int
var float32Num float32
var float64Num float64
var boolNum bool
var str string
fmt.Println(
intNum,
float32Num,
float64Num,
boolNum,
str) // 声明后不使用会编译错误
}
变量声明
Golang有多种声明变量的方法,比如:
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:15:49
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var s string = "Hello world"
fmt.Println(s)
}
当然,你也可以一次性申请多个变量:
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:21:55
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var s1, s2, s3, s4 string = "Hello", "world", "my", "dear"
fmt.Println(s1, s2, s3, s4)
}
在书写上述代码的时候,你也可以通过Go根据值自动判断变量类型的特性,来简写上述代码
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:25:29
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var s1, s2, s3, s4 = "Hello", "world", "my", "dears"
fmt.Println(s1, s2, s3, s4)
}
除了通过var
来声明变量,我们还可以使用:=
来声明变量,则上面的代码会变为
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:25:29
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
s1, s2, s3, s4 := "Hello", "world", "my", "dears"
// 如果左侧出现了已有的变量,则会报错
fmt.Println(s1, s2, s3, s4)
}
值得注意的是,这种声明方法只能在函数体内使用
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:25:29
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
glb := 12 // 这样书写是错误的
func main() {
fmt.Println(gbl)
}
一般我们再书写全局变量的时候,是这样写的
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:40:59
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
var (
RED string = "red"
GREEN string = "green"
BLUE string = "blue"
)
func main() {
fmt.Println(RED, GREEN, BLUE)
}
补充:在交换代码值的时候,可以参考Python的一些写法,而毋需再声明新的变量
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 16:32:54
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var s1, s2, s3, s4 = "Hello", "world", "my", "dears"
s3, s4 = s4, s3 // 必须确保参与交换的变量数据类型相同
fmt.Println(s1, s2, s3, s4)
}
值得注意的是,在golang中,string是不可修改的,因此尝试修改字符串内部的操作是被禁止的
package main
import "fmt"
func main() {
str := "hello world"
str[0] = "H" // cannot assign to str[0] (strings are immutable)
fmt.Println(str)
}
这样的好处是,字符串类型的子字符串切片就不再需要花销额外的内存了
作者:NorthCity1984
出处:https://grimoire.cn/golang/go2.html
版权:本文《Go 学习笔记:数据类型》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:https://grimoire.cn/golang/go2.html
版权:本文《Go 学习笔记:数据类型》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任