go 练习出现的问题

###常见问题

  1. if else语句
    else { 必须和 if 的 } 在同一行

  2. 在调用函数时,注意函数的参数和返回值。

eg:

/*type Time struct {
    sec int64 // 从1年1月1日 00:00:00 UTC 至今过去的秒数
    nsec int32 // 最近一秒到下一秒过去的纳秒数
    loc *Location // 时区
}*/

//获得现在的日期

// time.Time 类型
// today :=  切片使用必须是没有被定义过的,不能够跟函数参数相同
func  getWeekday(t time.Time) {
	today := time.Now().Weekday()

	switch time.Saturday {
	case today + 0:
		fmt.Println("today")
	case today + 1:
		fmt.Println("tomorrow")
	case today + 2:
		fmt.Println("in tow days")
	case today + 5:
		fmt.Println("today is Mondy")
	default:
		fmt.Println("xixi")
	}
}

func main(){
var today time.Time

//调用函数时注意 函数的参数和返回值

getWeekday(today)
  1. switch 可以没有条件
switch{
case:
case:
default:
}
  1. defer 语句会将函数推迟到外层函数返回之后执行。
    原理:推迟的函数调用会被压入一个栈中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用。

  2. 特殊的前缀 & 返回一个指向结构体的指针。

// 创建一个 *Vertex 类型的结构体(指针)
p  = &Vertex{1, 2}

	//创建结构体
	v2 := struct1{5, 6}
	v3 := struct1{x1: 5} //y:0 隐形赋值
	v4 := struct1{}      // x,y = 0
	p = &struct1{2, 6}

	fmt.Println(v2, v3, v4, p, *p) 

{5 6} {5 0} {0 0} &{2 6} {2 6}

  1. append 的第一个参数 s 是一个元素类型为 T 的切片,其余类型为 T 的值将会追加到该切片的末尾。
    append 的结果是一个包含原切片所有元素加上新添加元素的切片。
	var s []int
	// 可以一次性添加多个元素
	s = append(s, 2, 3, 4)	
  1. 使用for 循环类型的 range 遍历切片,一次返回两个值:下标和对应的副本

可以将下标或值赋予 _ 来忽略它。

	xixi := []int{5, 9, 6, 7, 66, 49, 1}

	for i, v := range xixi {
		fmt.Println(i, v)
	}
for i, _ := range xixi 		 //省略值
for _, value := range xixi   //省略下标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值