二、Go语言基础入门

举报
毛利 发表于 2021/07/15 04:37:36 2021/07/15
2k+ 0 0
【摘要】 @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

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。