Golang 基础数据类型注意事项

yxi-liu · · 814 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

基本数据类型

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并不是值类型,所以不能使用指针,函数传递是传递自身

 


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:yxi-liu

查看原文:Golang 基础数据类型注意事项

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

814 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传