GO学习笔记

这篇博客详细记录了Go语言的学习过程,包括包管理、常量、变量、指针、函数、数组、切片、map以及类型和方法等方面的基础知识点。重点讨论了Go中变量声明、指针操作、函数传递、数组和切片的区别以及map的使用注意事项。
摘要由CSDN通过智能技术生成

开始学习GO相关知识,记录基础知识点。学习过程主要参考the-way-to-go。

<一>

1.GO中包的存在可以理解为类似命名空间管理的作用,因此在当前包中可以通过引入包的方式来使用该包中的变量和函数。被引用包中变量或函数若首字母大写则表示在其他包中可见(类比java类中public),若为小写开头,即时引用包也无法使用其中变量或函数。如:

import "fmt"
fmt.Print("hello")

应用fmt包使用包中函数Print,首字母为大写。

2.常量相关
(1)常量在定义时可以利用显示或隐式
显式:const Pi int = 4
隐式:const Pi = 4
可以根据上下文确定变量类型。但常量定义必须在编译时就能获得
如: const Pi = getNumber()是不合法的。因为在编译期间自定义函数是未知的,但内置函数可以。
如:const Pi = len(s)

(2)每遇到一次const则itoa就重置为0。

3.:=申明赋值操作符一般用在局部变量中,不能用于全局变量。

4.局部变量声明必须使用,全局变量声明后可不使用。变量交换可简单的使用a, b = b, a 省去外部交换函数。

5.空白变量_是一个只写变量,因此可以用作抛弃值 如_. b := 5, 7 表示5被抛弃。

<二>

1.利用逻辑运算符短路的特性,对有多个表达判断式可以将复杂的放在右边,避免一些复杂的计算。

2.GO中不允许不同类型变量混合使用,常量不做限制

func main() {
   
	var a int
	var b int32
	a = 15
	b = a + a	 // 编译错误
	b = b + 5    // 因为 5 是常量,所以可以通过编译
}

3.++/–只可用在语句中,不可用在表达式中。
如:a = b++ 错误写法。
java/c等可以使用foo(i++)或b[i] = a[i++],但Go中不允许。

4.使用指针需要注意无法获取字面量或常量地址,如:P := &1不合法。

5.Go中不支持指针运算,如:c = *p++不合法。

6.指针可以使用反向引用(间接引用),如:var p *int; t := 10; p = &t; print(*p)//10
但空指针无法使用反向引用。

<三>

1.函数类型:
(1)普通命名函数
(2)匿名函数或者lambda函数
(3)方法
Go中函数不支持重载。

2.函数中不能声明函数(不能嵌套),可通过匿名函数打破该限制。

3.GO中支持传递变长参数的变量,可理解为相同类型的slice,如:

func test(temp ...int){
   
	for _, v := range temp {
   
		fmt.Println(v)
	}
}

func main(){
   
	   test(3,4,5)
	}

此时test中相当于temp值为[]int{3,4 ,5}

若传递参数个数和类型不确定可以考虑使用空接口…interface{},如:

func test(temp ...interface{
   }){
   
	for _, v := range temp {
   
		fmt.Println(v)
	}
}

func main(){
   
	   test(3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值