Go语言学习笔记一、基础知识

package main

import (
	"errors"
	"fmt"
)

func main() {

	//变量的申明方式:
	//1.var vname type
	var a string
	a = "hello world !"
	fmt.Println(a)
	//2.多个变量三种:var vname1 , vname2 , vname3 type = v1 , v2 , v3,也可采用分组变量

	var x, y, z int = 1, 2, 3
	fmt.Println(x + y + z)

	//vname1 , vname2 , vname3 type := v1 , v2 , v3
	i, j, k := 'a', 'b', 'c'
	fmt.Println(string(i) + string(j) + string(k))

	//分组变量
	// var (
	// 	ii     int
	// 	pii    float32
	// 	prefix string
	// )

	//3.丢弃值: _ , b : = -1 , 12
	_, b := -1, 12
	fmt.Println(b)

	//4. 常量的申明 const Pi = 3.1415,常量是不需要使用“:”推断类型的,但你可以显示的申明常亮类型:const Pi float32 = 3.1415
	const Pi = 3.1415
	fmt.Println(Pi)

	//数值类型
	//rune是int32的别称,byte 是uint8的别称
	var aa rune = 32
	var bb int32 = 32
	if aa == bb {
		fmt.Println("rune是int32的别名")
	}

	var xx byte = 2
	var yy uint8 = 2
	if xx == yy {
		fmt.Println("byte是uint8的别名")
	}

	//Go中字符串是不可变的,s[0] = 'c' //编译报错,字符穿不能修,但可进行切片操作
	var s string = "hello"
	fmt.Println(s)

	s = "c" + s[1:]
	fmt.Println(s)

	//字符串的换行使用'`'符号连接
	str := `Hello 
	World`
	fmt.Println(str)

	//Go中内置了error来接受错误类型,package中errors来跑出错误
	var err error = errors.New("make a  error")
	if err != nil {
		fmt.Println(err)
	}

	//iota枚举关键字用法,常量复制iota那么,后边的常量即使不申明复制iota,也默认等于iota,且每次+1.但再次遇到const时,iota重置为0

	// const(

	// 	d = iota
	// 	e = iota
	// 	f = iota
	// 	g = iota
	// 	h
	// )
	// fmt.Println(d)
	// fmt.Println(e)
	// fmt.Println(f)
	// fmt.Println(g)
	// fmt.Println(h)

	//数组的初始化
	var arr [3]int
	arr[0] = 10

	arrs := [3]int{1, 2, 3}
	fmt.Println(arrs[0])
	fmt.Println(arrs[1])
	fmt.Println(arrs[2])

	//自动推断长度的数组

	arrss := [...]int{4, 5, 6}
	fmt.Println(arrss[0])
	fmt.Println(arrss[1])
	fmt.Println(arrss[2])

	//slice是数组的切片,slice和数组的区别是,slice的申明没有长度也不适用...来自动推断长度
	slice := []byte{'a', 'b', 'c'}
	fmt.Println(slice)
	fmt.Println(slice[0])
	fmt.Println(slice[1])
	fmt.Println(slice[2])

	//slice可从数组中得到
	slice2 := arrs[1:]
	fmt.Println(slice2[0])
	fmt.Println(slice2[1])

	//[:]完整获取数组的值
	slice3 := arrss[:]
	for i := 0; i < len(slice3); i++ {
		fmt.Println(slice3[i])
	}

	fmt.Println(cap(slice3))

	//从arrary中获取数组到slice中
	slice3 = append(slice3, arrs[1:3]...)
	fmt.Println("***")
	for i := 0; i < len(slice3); i++ {
		fmt.Println(slice3[i])
	}
	fmt.Println("***")

	//map的用法map[keyType]valueType
	user := make(map[int]string)
	user[1001] = "yyq"
	user[1002] = "yyq1"
	user[1003] = "yyq2"
	fmt.Println(user[1001])

	//map的另一种初始化方式
	user2 := map[int]string{1001: "yyq", 1002: "yyq2", 1003: "yyq3"}
	fmt.Println(user2[1003])

	delete(user, 1001)
	fmt.Println(user[1001])

	//make用于分配map,slice,channel的内存,并初始化为“非零”值,new用于各类内存的分配,并初始化成“零”值
	

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值