這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
基礎資料型別 (Elementary Data Type)
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 mainimport "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並不是實值型別,所以不能使用指標,函數傳遞是傳遞自身