整型
int,int32,int64,uint…
整型运算结果只能是整型
package main
import "fmt"
func main() {
var i int = 10
var b int = 4
//是2,不是2.5
fmt.Println(i/b)
}
浮点
float64,float32
浮点不支持取余
package main
import "fmt"
func main() {
var i float64 = 2.0
var b float64 = 1.0
//浮点不支持取余
//fmt.Println(i%b)
fmt.Println(i/b)
}
bool
true,false
string
1.两种定义方式“”,``(不解释特殊字符\r\n\t\f…)
2.拼接使用 +
3.可以索引(返回ASCII编码值)
4.可以切片
5.可以比较
package main
import "fmt"
func main() {
//支持使用""定义
fmt.Println("a\tb")
//支持使用``定义,不解释特殊字符
fmt.Println(`a\tb`)
//字符使用+拼接
fmt.Println("hello" + "world")
a := "abcdefg"
//可索引
fmt.Println(string(a[0]))
//可切片
fmt.Println(a[0:1])
//可比较
fmt.Println("b" > "a")
}
指针
1.正常的变量赋值,都是开辟一个新的内存空间,修改变量不会相互影响
2.指针通过&变量指向内存空间地址(不会开辟新的内存空间),通过*变量改变内存地址的值
3.空指针 nil
package main
import "fmt"
func main() {
a := 2
b := a
//a,b 内存地址不一样
fmt.Println(&a, &b)
b = 3
// result 2,3
fmt.Println(a, b)
c := 2
d := &c
//d指向c的内存空间地址
fmt.Println(d)
*d = 4
//c变成类4
fmt.Println(c)
}
package main
import "fmt"
func main() {
//传入空指针
c(nil)
}
func c(a *interface{}) {
fmt.Println(a)
}