为了账号安全,请及时绑定邮箱和手机立即绑定

GO学习笔记1-类型操作

标签:
Go

package main
//每一个可独立运行的Go程序,必定包含一个package main,
//在这个main包中必定包含一个入口函数main,而这个函数既没有参数,也没有返回值。

import ("fmt") //引入包

func main() {
//GO支持UTF-8
fmt.Printf("\nHello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちは世界\n")
//各种类型的默认值
var vname0 float64
var vname1 string
var vname2 int64
var vname3 bool
var vname4 struct{}
var vname5 byte
fmt.Printf("float64的默认值为:%v", vname0)
fmt.Printf("\n字符串的默认值为:%v", vname1)
fmt.Printf("\nint默认值为:%v", vname2)
fmt.Printf("\n布尔的默认值为:%v", vname3)
fmt.Printf("\n结构体的默认值为:%v", vname4)
fmt.Printf("\n字节默认值为:%v", vname5)

//变量-静态变量,全局变量,变量的赋值
const jingtai string = "静态变量"
const PI float32 = 3.1415926

var bianliang string = "变量"
fmt.Printf("\n改变前:%v", bianliang)
bianliang = "改变"
fmt.Printf("\n改变后:%v", bianliang)
//连续赋值
no, yes, maybe := "否", "是", "可能"
fmt.Printf("\nno的值:%v", no)
fmt.Printf("\nyes的值:%v", yes)
fmt.Printf("\nmaybe的值:%v", maybe)

//改变字符串中的值
s := "hello"
c := []byte(s)
c[2] = 'a'
s1 := string(c)
fmt.Printf("\nmaybe的值:%v", s1)

//字符串的拼接
stra := "Hello"
strb := "GO"
strc := stra + "  " + strb
fmt.Printf("\n字符串拼接后的值:%v", strc)

//字符串的截取
strd := "ceshiabc"
stre := strd[1:3]
fmt.Printf("\n字符串截取的值:%v", stre)
strf := strd[1:]
fmt.Printf("\n字符串截取的值:%v", strf)
strg := strd[:3]
fmt.Printf("\n字符串截取的值:%v", strg)

//多行字符串
strh := `a
b
c
d`
fmt.Printf("\n多行字符串的值:%v", strh)

//枚举iota
//中间赋值不是iota的话,就是新的值
//中间不赋值iota的话,则下一个iota依然是当前他所在的数组的索引的值
const (
    x = iota
    y = iota
    z = iota
    m = "aaa"
    n = iota
    p = 123
    q = iota
)

fmt.Printf("\n枚举的值:%v,%v,%v,%v,%v,%v,%v", x, y, z, m, n, p, q)
//每遇到一个const关键字,iota就会重置
const v = iota
fmt.Printf("\n重置枚举的值:%v", v)

//数组格式var 数组名 [长度值] 类型
var arra [5]int
fmt.Printf("\n数组的默认值:%v", arra[:5])
//为数组赋值
arra[1] = 12
arra[4] = 23
fmt.Printf("\n数组的默认值:%v", arra[:5])

//特殊数组的声明
arrb := [10]int{1, 2, 3}
arrc := [...]int{1, 2, 3, 4, 5, 6}
fmt.Printf("\n数组的值:%v", arrb)
fmt.Printf("\n数组的值:%v", arrc)

//二维数组
arrd := [2][4]int{{1, 2, 3, 4}, {5, 6, 7, 8}}
fmt.Printf("\n二维数组的值:%v", arrd)
fmt.Printf("\n二维数组的值:%v", arrd[1][2])

//map的声明
//var numbers map[string]int

// 另一种map的声明方式
numbers := make(map[string]int)
numbers["one"] = 1   //赋值
numbers["ten"] = 10  //赋值
numbers["three"] = 3 //赋值
fmt.Println("\nMAP的值是: ", numbers)
fmt.Println("\n第三个数字是: ", numbers["three"])

/*******MAP的注意点*******/
/*************************
  map是无序的,每次打印出来的map都会不一样,它不能通过index获取,而必须通过key获取
  map的长度是不固定的,也就是和slice一样,也是一种引用类型
  内置的len函数同样适用于map,返回map拥有的key的数量
  map的值可以很方便的修改,通过numbers["one"]=11可以很容易的把key为one的字典值改为11
  map的初始化可以通过key:val的方式初始化值,同时map内置有判断是否存在key的方式
  ************************/

//MAP的删除,
delete(numbers, "three") //从字典中删除key值为three的
fmt.Println("\n第三个数字是: ", numbers)

//make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。
//make只能创建slice、map和channel
//make返回初始化后的(非零)值
//new返回指针
fmt.Println("\n第三个数字是: ", numbers)

fmt.Scanf("请输入。。。")

}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
11
获赞与收藏
43

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消