二、Go语言基础入门
【摘要】 @Author:Runsen
最近在从 Java/python 语言转型到 go 语言,本文是Go 基础系列的文章,不会刻意追求面面俱到,但该有知识点都会覆盖。
下面我们就来简单的看看 go 语言里的这些语法吧。
文章目录
变量基本类型常量
变量
Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。其实这就是Python,Java编码...
@Author:Runsen
最近在从 Java/python 语言转型到 go 语言,本文是Go 基础系列的文章,不会刻意追求面面俱到,但该有知识点都会覆盖。
下面我们就来简单的看看 go 语言里的这些语法吧。
变量
Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。其实这就是Python,Java编码的命名要求。
Go 语言声明变量的一般形式是使用 var 关键字,这个和JavaScript很相似。
比如,我们声明一个为int类型的变量a:
var a int
可以看出,Go语言声明变量的方式为:
var <变量名> <变量类型>
我们还可以同时声明多个类型相同的变量:
var <变量名1>, <变量名2>, <变量名3>, ... <变量类型>
使用分组同时声明多个类型不同的变量:
var (
<变量名1> <变量类型1> <变量名2> <变量类型2> <变量名3> <变量类型3> ...
)
我们可以发现Go编程语言声明变量与Python和Java不同,Python不需要声明变量的类型。Java声明变量是将类型写在最前面,没有var关键字。Go声明变量的类型却在后面
下面是一个具体的例子,需要注意的是数值类型默认为 0,布尔类型默认为 false,字符串默认为""
(即空字符串)
package main
import "fmt"
var i bool//类型在后
func main() {
var a, b, c int//多个
var d string
fmt.Println(i, a, b, c, d)
j, k := 2, 3
fmt.Println(j, k)
}
# false 0 0 0
# 2 3
变量d由于是空字符串,所以打印出来了但是看不到。
除此之外还有一种更简洁的声明变量的方式,就是使用:=
声明变量。
当我们使用:=
声明变量时,不用写var也不用写类型,但是这里需要强调这种方式只能在函数内部使用,不能在函数外部使用。因此如果在函数外部声明变量时,只能使用var。
此外,这里还要一个非常需要注意的一点:我们声明的变量必须要使用,如果声明了变量,但是没使用,会在编译时报错。
比如:
package main
import "fmt"
func main() {
var i bool
var j int //声明了,但没使用,会报错 j declared and not used
fmt.Println(i)
}
基本类型
像其他语言一样,go 有布尔类型,字符串类型,整数类型,浮点数类型和复数类型。
布尔类型为bool,值可取true或false,默认值为false。
字符串类型为string,默认为空字符串""。
整数类型分为:
- 有符号数:int、int8、int16、int32 (rune)、int64
- 无符号数:uint、uint8 (byte)、uint16、uint32、uint64
具体的数值范围查看下表
类型 | 长度(字节) | 数值范围 |
---|---|---|
int8 | 1 | -128~127 (-2^(8-1) ~ 2^7-1) |
uint8 | 1 | 0~255 (0 ~ 2^8-1) |
int16 | 2 | -32768~32767 |
uint16 | 2 | 0~65535 |
int32 | 4 | -2^31 ~ 2^31-1 (-2147483648~2147483647) |
uint32 | 4 | 0~2^32-1 (0~4294967295) |
int64 | 8 | -2^63 ~2^63-1 |
uint64 | 8 | 0~2^63 |
其中int和uint的两种类型的长度相同,取决于具体的编译器,比如在32位系统上通常为32位,在64位系统上通常为64位。
浮点数类型有两种:float32和float64,注意没有所谓的float类型。
复数类型也有两种:complex64和complex128
下面写一个定义变量赋值综合例子。
package main // 包名
import "fmt" // 导入
var (
a = 1
b = "hello"
c = true
)
func main() {
fmt.Println(c)
variableNoValue()
variableQuick()
}
func variableNoValue() {
var a int
fmt.Println(a)
}
func variableQuick() {
a, b := 5, "hello"
fmt.Println(a, b)
}
# true
# 0
# 5 hello
常量
Go语言使用const来声明并赋值常量,常量在编译期间就确定,后续不能更改,也就是我们常数的常量不可以修改。
const Pi float32 = 3.1415926
const Pi = 3.1415926
Go 语言中的常量定义会有一些默认的规则,主要有:
- 定义常量时必须有值。
- 常量组中如果不对常量赋值的话,常量的值与上面一个是一致的。
- 常量与iota混用的话,iota会从0开始计数,多一个常量就会增加
这里大家可能对iota有些陌生,iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
下面写一个定义综合例子。
package main
import (
"fmt"
)
func main() {
const ( a = 2 b // b=2 c = 5 d // d=5 e // e=5
)
fmt.Println("Hello, Go常量:", a, b, c, d, e) const ( f = 1 g = 1 h = iota // 前面有2个常量所以这里h =2 i // i 在h之后,也会自动+1 j // 同理与j,自动+1 k = 10 l = iota // iota 并不会因为上面的k值变化,而变化依然是6
)
fmt.Println("Hello, Go常量:", f, g, h, i ,j, k, l)
}
# Hello, Go常量: 2 2 5 5 5
# Hello, Go常量: 1 1 2 3 4 10 6
文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。
原文链接:maoli.blog.csdn.net/article/details/107814207
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)