基本数据类型
int型
根据平台不同而不同,但即使是int64 或int32 和 int并不同,需要转换
浮点型
默认是float64
浮点数在进行比较的使用最好用math包的模块,用== 并不精确
import "math" math.Fdim(math.Fdim(f1,f2)<p)
字节类型
一个是byte代表的是uint8的别名,代表utf-8的一个字节
一个是rune代表的是代表是单个Unicode字符uint32
数组
var a [32] byte; [2*N] struct { x, y int32 } [1000]*float64 [3] [5] int [2][2][2] float64
for i, v := range array { 。。。 }
切片
两种创建方式:在数组上切片,新创建。
var my Array [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} var my Slice []int = my Array[:5]
my Slice1 := make([]int, 5) my Slice2 := make([]int, 5, 10) // 第一个是len(), 第二个是cap() my Slice3 := []int{1, 2, 3, 4, 5}
切片的append用法
my Slice = append(my Slice, my Slice2...) // 注意第一个可以是列表,但是第二个必须是相应的数据类型,如果不是用...打散!
切片有copy()方法,copy(slice1, slice2), 并且两个切片len可以不同。在长度不同的情况下,复制部分
package main import "fmt" func add(a [] int) { a[0] += 1 } func addarray(a [4] int) { a[0] += 1 } func addarray_pointer(a *[4] int) { a[0] += 1 } func main() { var arra [4] int = [4] int {10,2,3,4} // 数组 addarray(arra) // 数组是值类型 fmt.Println(arra) // 这里不变 addarray_pointer(&arra) // 传入数组指针 fmt.Println(arra) // 这里改变了 a := []int{1,2,3,4} // 定义切片 add(a) // 不能传指针,且改变的是自身 fmt.Println(a[0]) }
Map类型
mymap = make(map[string] PersonInfo) mymap = make(map[string] PerionInfo , 100) my Map = map[string] Person Info{ "1234": Person Info{"1", "Jack", "Room 101,..."}, }
value, ok := my Map["1234"] if ok { ... // 如果有ok为true否则为false }
delete(mymap,"1234")
var mymap map[string] int = map[string] int {"123":456,"233":445} for i,k:= range mymap { fmt.Println(i,k) }
mymap["113"] = 123
map并不是值类型,所以不能使用指针,函数传递是传递自身
有疑问加站长微信联系(非本文作者)