整型
整型分为两大类:
- 按长度:int8、int16、int32、int64
- 无符号整型:uint8、uint16、uint32、uint64
类型 | 描述 |
---|---|
uint8 | 无符号8位整型(0到255) |
uint16 | 无符号16位整型(0到65535) |
uint32 | 无符号32位整型(0到4294967295) |
uint64 | 无符号64位整型(0到18446744073709551615) |
int8 | 有符号8位整型(-128到127) |
int16 | 有符号 16位整型 (-32768 到 32767) |
int32 | 有符号 32位整型 (-2147483648 到 2147483647) |
int64 | 有符号 64位整型 (-9223372036854775808 到 9223372036854775807) |
特殊整型
类型 | 描述 |
---|---|
uint | 32位操作系统上就是uint32,64位操作系统上就是uint64 |
int | 32位操作系统上就是int32,64位操作系统上就是int64 |
uintptr | 无符号整型,用于存放一个指针 |
引用类型
数据类型 | 长度 | 默认值 | 说明 |
---|---|---|---|
slice | nil | 引用类型,切片 | |
map | nil | 引用类型,map | |
channel | nil | 引用类型,通道 | |
interface | nil | 引用类型,接口 | |
function | nil | 引用类型,函数 |
slice引用传递,修改值
package main
import "fmt"
func main() {
var sliceOne []string
// 赋值
sliceOne = append(sliceOne, "值:")
fmt.Println("初始值", sliceOne)
// 引用传值
exChange(sliceOne)
// 输出的值被修改了
fmt.Println(sliceOne)
}
func exChange(sliceOne []string) {
for key, value := range sliceOne {
sliceOne[key] = value + "拼接"
}
}
输出结果:
这是一个很明显的修改引用类型的例子,函数 exChange
的修改,会影响到原来变量 sliceOne
的值。
slice引用传递,添加元素
package main
import "fmt"
func main() {
sliceOne := []int{1, 2, 3}
fmt.Println("值:", sliceOne, "len:", len(sliceOne), "cap:", cap(sliceOne))
fmt.Printf("未扩容前的地址:%p \n", sliceOne)
// 引用传值
appendVal(sliceOne)
// 输出的值被修改了
fmt.Println(sliceOne)
}
// 添加值
func appendVal(sliceOne []int) {
fmt.Printf("函数内部,扩容之前地址: %p \n", sliceOne)
sliceOne = append(sliceOne, 4)
fmt.Println("函数内输出值:", sliceOne, "len:", len(sliceOne), "cap:", cap(sliceOne))
fmt.Printf("扩容后的地址:%p \n", sliceOne)
}
输出结果:
从上面的例子可以看到,这次我们向 sliceOne
添加元素,但是并未影响到函数体外的 sliceOne
,原因在于:可以看到,在golang对 sliceOne
扩容之后,切片的地址发生了变化。
布尔值
golang中以bool类型进行声明布尔型数据,布尔型数据只有true和false。
注意:
- 布尔类型变量的默认值为false
- golang中不允许将整型强制装换为布尔型
- 布尔型无法参与数值运算,也无法与其他类型进行装换
字符串
golang中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型一样。golang的字符串的内部使用utf-8编码。字符串的值为" "中的内容。
str1 := "字符串1"
str2 := "字符串2"
fmt.Println(str1, str2)
多行字符串
golang中要定义一个多行字符串时,就必须使用反引号字符:
str1 := `
很长很长的字符换
很长很长的字符换
很长很长的字符换
很长很长的字符换
很长很长的字符换
`
fmt.Printf("%s", str1)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。