上篇文章中介绍了18种基本数据类型以及8种复合数据类型,接下来简单使用例子来说明一下如何定义/初期化/使用。
基本数据类型
我们从18种基本数据类型中挑选几种有代表性的,然后使用go语言中常用的定义以及初期化的方式进行使用。
例子代码
[root@liumiaocn goprj]# cat basic-1.go
package main
import "fmt"
func main() {
//bool var definition and init
var flag bool = false
fmt.Println("flag = ", flag)
//int var
var i, j, k int
i = 1
j = 2
k = 3
fmt.Printf("i=%d, j=%d, k=%d\n", i, j, k)
//var rune and init
var r1, r2, r3 rune = 4, 5, 6
fmt.Printf("r1=%d r3=%d r3=%d\n", r1, r2, r3)
//var float32 and init
var (
f1 float32 = 2.1
f2 float32 = 3.4
)
fmt.Printf("f1=%f f2=%f\n", f1, f2)
//var string and init
var str1 string
str1 = "liumiaocn"
fmt.Println("hello, ", str1)
//:=
str2 := "hello"
fmt.Printf("str2 = %s \n", str2)
}
[root@liumiaocn goprj]#
执行结果
[root@liumiaocn goprj]# go run basic-1.go
flag = false
i=1, j=2, k=3
r1=4 r3=5 r3=6
f1=2.100000 f2=3.400000
hello, liumiaocn
str2 = hello
[root@liumiaocn goprj]#
指针类型
go语言中指针的基本概念和C语言的基本使用方式和思路相差不大。
例子代码
[root@liumiaocn goprj]# cat basic-pointer.go
package main
import "fmt"
func main() {
var intPointer *int
var i int = 100
intPointer = &i
fmt.Println("value of i = [%d] address is [%x] \n", i, &i)
fmt.Println("value of intPointer = ", intPointer)
fmt.Println("value of var pointed to = ", *intPointer)
}
[root@liumiaocn goprj]#
执行结果
[root@liumiaocn goprj]# go run basic-pointer.go
value of i = [%d] address is [%x]
100 0xc42000a2c0
value of intPointer = 0xc42000a2c0
value of var pointed to = 100
[root@liumiaocn goprj]#
数组
例子代码
[root@liumiaocn goprj]# cat basic-array.go
package main
import "fmt"
func main() {
var intarr1 = [6]int{1, 2, 3, 4, 5, 6}
fmt.Println("intarr1 = ", intarr1)
var strarr1 = []string{"this", "is", "a", "test"}
fmt.Println("strarr1 = ", strarr1)
}
[root@liumiaocn goprj]#
执行结果
[root@liumiaocn goprj]# go run basic-array.go
intarr1 = [1 2 3 4 5 6]
strarr1 = [this is a test]
[root@liumiaocn goprj]#
构造体
例子代码
[root@liumiaocn goprj]# cat basic-struct.go
package main
import "fmt"
func main() {
type person struct {
id int
name string
country string
}
//def and init 1
var liumiao person
liumiao.id = 1001
liumiao.name = "liumiao"
liumiao.country = "China"
fmt.Println("liumiao=", liumiao)
//def and init 2
michael := person{1002, "michael", "PRC"}
fmt.Println("michael=", michael)
}
[root@liumiaocn goprj]#
执行结果
[root@liumiaocn goprj]# go run basic-struct.go
liumiao= {1001 liumiao China}
michael= {1002 michael PRC}
[root@liumiaocn goprj]#