Go小知识 基本语法 Go小知识 基本语法

这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战

Go小知识 | 基本语法

变量定义

使用var 关键字

  • var a,b,c bool
  • var s1,s2 string = “hello”, “world”
  • 可放在函数内,或直接放在包内
  • 使用 var() 集中定义变量

编译器类型推断

  • var a, b, i, s1, s2 = true, false, 3, “hello”, “world”

使用 := 定义变量

  • a, b, i, s1, s2 := true, false, 3, “hello”, “world”
  • 只能在函数内使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
go复制代码package main

import "fmt"

// 包全局不能使用 := 定义变量
var (
aa = 3
ss = "kkk"
bb = true
)
// 变量空值
func variableZeroValue () {
var a int
var s string
fmt.Printf("%d %q\n",a,s)
}
// 变量赋值
func variableInitialValue () {
var a, b int = 3,4
var s string = "abc"
fmt.Println(a,b,s)
}
// 类型推断
func variableTypeDeduction () {
var a,b,c,s = 3,4,true,"def"
fmt.Println(a,b,c,s )
}
// := 定义变量
func variableShorter () {
a,b,c,s := 3,4,true,"def"
b = 5 // 改变值
fmt.Println(a,b,c,s )
}
func main(){
fmt.Println("Hello GoLang")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
fmt.Println(aa,ss,bb)
}
1
2
3
4
5
6
bash复制代码Hello GoLang
0 ""
3 4 abc
3 4 true def
3 5 true def
3 kkk true

内建变量类型

  • bool, string4
  • (u)int, (u)int8,(u)int16,(u)int32,(u)int64,unitptr(指针) u无符号
  • byte,rune (go 语言字符型32位, 类似于char)
  • float32,float64,complex64,complex128
1
2
3
4
5
6
7
8
9
10
11
12
13
14
go复制代码package main

import (
"fmt"
"math/cmplx"
)
func euler() {
c := 3 + 4i
fmt.Println(cmplx.Abs(c))
}
func main(){
fmt.Println("Hello GoLang")
euler()
}
1
2
bash复制代码Hello GoLang
5

强制类型转换

类型转换是强制的, go 语言中之后强制类型转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
go复制代码package main

import (
"fmt"
"math"
)

func triangle () {
var a,b int = 3,4
var c int
c = int(math.Sqrt(float64(a*a + b*b))) // 强制类型转换
fmt.Println(c)
}
func main(){
fmt.Println("Hello GoLang")
triangle()
}

常量的定义

基本用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
go复制代码package main

import (
"fmt"
"math"
)

func consts() {
const filename = "abc.txt"
const a,b = 3, 4
var c int
c = int(math.Sqrt(a*a+b*b))
fmt.Println(filename,c)
}

func main(){
consts()
}
1
bash复制代码abc.txt 5

枚举类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
go复制代码package main

import (
"fmt"
)

func enums () {
const(
cpp = 0
java = 1
python = 2
golang = 3
)
fmt.Println(cpp, java, python, golang)
}

func main(){
enums() // 0 1 2 3
}

iota 自增值

自增值枚举类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
go复制代码package main

import (
"fmt"
)

func enums () {
const(
cpp = iota //自增值
_
java
python
golang
)
fmt.Println(cpp, java, python, golang)
}

func main(){
enums() // 0 2 3 4
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
go复制代码// 定义 b,kb,mb,gb,tb,pb
package main

import (
"fmt"
)

func enums () {
const(
b = 1<< (10*iota)
kb
mb
gb
tb
pb
)
fmt.Println(b,kb,mb,gb ,tb,pb)
}

func main(){
enums() // 1 1024 1048576 1073741824 1099511627776 1125899906842624
}

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%